Laravel schedule:run 命令无效

Laravel schedule:run command is not working

我在实时服务器 (Linux) 的 laravel 中设置后台计划。我正在使用比特纳米。但是当我像这样使用命令时 schedule:run 不起作用:

* * * * * /opt/bitnami/php/bin/php /opt/bitnami/apache2/htdocs/turnfitter/artisan schedule:run 1>> /dev/null 2>&1

我也这样试过:

* * * * * php artisan schedule:run 1>> /dev/null 2>&1 ###

没有发生错误,但计划不工作。

当我这样尝试时:

php artisan schedule:run 1>> /dev/null 2>&1

或喜欢

/opt/bitnami/php/bin/php /opt/bitnami/apache2/htdocs/turnfitter/artisan schedule:run 1>> /dev/null 2>&1

没有星号 (*) 那么它可以工作,但只有一个命令被处理,我在我的内核时间表中设置为每一分钟,如下所示:

$schedule->command('payment:check')->everyMinute();

但它只运行一次当我运行 schedule:run命令之后什么都不做。我每小时、每天等调用的其他命令根本不起作用。

谁能告诉我可能是什么问题?

使用 Bitnami LAMP 堆栈可用 https://bitnami.com/stack/lamp

这些是我在 Laravel 上成功设置时间表所遵循的步骤:

  • 在 Apache 配置文件中取消注释下面的行 /opt/bitnami/apache2/conf/bitnami/bitnami-apps-prefix.conf:

    #Include "/opt/bitnami/lampstack-5.6.26-3/frameworks/laravel/conf/httpd-prefix.conf"
    
  • 编辑文件的方法时间表 /opt/bitnami/frameworks/laravel/app/Console/Kernel.php:

    protected function schedule(Schedule $schedule)
    {
        $schedule->exec('echo "Hello World"')
          ->everyMinute()
          ->appendOutputTo('/tmp/laravel.log');
    }
    
  • 重新启动 Apache:sudo /opt/bitnami/ctlscript.sh restart apache

  • 运行: /opt/bitnami/php/bin/php /opt/bitnami/frameworks/laravel/artisan schedule:run >> /dev/null 2>&1

结果:

您应该访问:

Laravel's php artisan schedule:run 命令 运行s 调度器只有一次。为了使其工作,您需要将此命令添加到位于 /etc 目录的 cron 配置文件 (crontab)。按照以下步骤操作:

第一步: 将 cron 条目添加到 crontab 文件 [使用 nano 打开文件 /etc/crontab]

* * * * * root php path/to/artisan schedule:run

注意: - ****的意思是每分钟运行命令 -root 是用户名,你应该指定适当的用户名 -请在您的 laravel 项目中指定 artisan 命令的完整路径。

第 2 步: 重启服务

> sudo service cron reload   
> sudo service cron stop  
> sudo service cron start

要检查 cron 的状态,运行 sudo service cron status

第 3 步: 请确保您已在 App/Console/Kernel 中的调度函数中编写代码。这是我在那里写的:

   protected function schedule(Schedule $schedule)
    {
        $schedule->call(function(){
            Mail::send([],[],
                function ($m){
                    $m->to(['test@example.com'],'Notify')
                        ->subject('Renewal Notification')
                        ->setBody('You have upcoming renewal.');
                });
        })->everyTenMinutes();
    }

Laravel 提供了很多功能来安排您的呼叫或命令。我使用了 everyTenMinutes() 函数。然而,Laravel 在内部按照这些计划运行,我们应该只确保我们在 cron 配置文件中使用单个条目(在步骤 1 中提到)频繁调用 schedule:run 命令。