我在使用队列和调度程序的laravel中发送邮件时遇到问题

问题描述

我正在使用laravel,我需要发送邮件。我配置了cron作业和调度程序,但遇到了一个特殊的问题。

我可以看到我的任务正在进入作业表。但是,当queue:work由cron作业和调度程序执行时,Jobs表为空,而fail-jobs为空,我也没有收到任何电子邮件

我的cron作业命令:

usr/local/PHPcron/IsPHPlaravel73 / LaravelApp-path/artisan schedule:run >>/dev/null 2>&1

app / console / kernel.PHP

    Protected function schedule(Schedule $schedule)
{
    $this->command('queue:work')->withoutOverlapping() ;
}

谢谢您的帮助。

解决方法

您必须每分钟运行Laravel schedule:run命令,将使用以下方法,

1。进入Linux

要编辑或创建crontab文件,请在UNIX / Linux shell提示符下键入以下命令:

$ crontab -e

然后在crontab中编写Laravel命令

* * * * * usr/local/phpcron/Isphplaravel73 / LaravelApp-path/artisan schedule:run >>/dev/null 2>&1

2。使cronjob进入您的cPanel共享托管 在这一步中,我们必须定义cPanel cronjob,以便每分钟运行一次laravel计划。为此,登录cPanel并转到Cron Jobs选项,然后创建一个新的cronjob,如下所示。 从通用设置下拉框中选择Once Per Minute选项。

  • 在命令文本框中,按照此格式输入值。
  • 格式:/usr/local/bin/php /home/hosting_user_name/your_artisan_file_path schedule:run >> /dev/null 2>&1
  • 在命令文本框中输入命令后,请点击添加新的Cron作业按钮。
  • enter image description here

    如果仍然无法正常工作,请在每次运行的作业中检查作业输出

    Protected function schedule(Schedule $schedule)
    {
        $this->command('queue:work')->withoutOverlapping()->sendOutputTo($filePath) ;
    }
    

    sendOutputTo laravel方法,用于获取文件输出。 https://laravel.com/docs/5.3/scheduling#task-output

    ,

    这不是 laravel 或 php 的问题,而是服务器的问题。我以前遇到过这个问题,要么购买高级电子邮件,要么使用 gmail smtp。根据我的经验,服务器的默认电子邮件不适用于 cron。

    相关问答

    Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
    Python-如何使用点“。” 访问字典成员?
    Java 字符串是不可变的。到底是什么意思?
    Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
    “loop:”在Java代码中。这是什么,为什么要编译?
    java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...