laravel schedule:运行命令不起作用

时间:2016-09-05 15:10:48

标签: php laravel-5.2 bitnami

我在实时服务器(Linux)上的laravel中设置后台时间表。我正在使用bitnami。但是时间表:当我使用这样的命令时,运行不起作用

* * * * * / 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

没有星号(*)然后它工作,但只处理了一个命令,我设置为我的日程表中的每分钟像这样

$时刻表>命令( '付款:检查') - > everyMinute();

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

任何人都可以告诉可能是什么问题吗?

2 个答案:

答案 0 :(得分:2)

使用https://bitnami.com/stack/lamp

处提供的Bitnami LAMP堆栈

以下是我在Laravel上成功设置Schedule的步骤:

  • 在Apache congirutation文件/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示例项目位于:http://127.0.0.1/laravel/
  • 每分钟一个" Hello world!"在/tmp/laravel.log
  • 上添加了一行

你应该访问:

答案 1 :(得分:0)

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

第1步: 将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命令。