在Production Server上设置Laravel Scheduler(Inmotion Hosting)

时间:2017-04-04 23:27:27

标签: php laravel cron laravel-scheduler

我已经意识到你为laravel调度程序编写cron的方式因托管到托管而异,因此在这种情况下文档是无用的。

我在之前的主机(siteground)上使用的相同代码似乎不适用于我当前的主机(inmotion)。

运行调度程序的cron,我从CPanel设置的那个似乎工作:

php -q /home/xxxxx/xxxxx/artisan schedule:run

我说它似乎有用,因为每当我的cron运行时我都会收到这封电子邮件:

Running scheduled command: /usr/bin/php -q /home/xxxxx/xxxxx/artisan {command} > '/dev/null' 2>&1 &

现在上面的脚本似乎没有执行它只是挂起并且进程堆积了我的内存,直到我的整个服务器崩溃。

所以我在这里很困惑,为什么php -q /home/xxxxx/xxxxx/artisan schedule:run会执行,但某种程度上我的应用无法执行/usr/bin/php -q /home/xxxxx/xxxxx/artisan {command}

我用谷歌搜索了几个建议,在哪里使用php-cli代替php -q,但php-cli给我一个command not found错误。

所以我对此提出了支持,这就是他们所说的:

  

我不确定你是如何用另一个命令运行该命令的   主机,因为php-cli不是php命令行界面的命令。   不幸的是,因为这不是一个有效的命令,我不确定我是否   通过运行来了解您要完成的任务。

     

php -q是执行php-cli的选项,这是你应该做的   用于你的crons;但它只会正确执行   正在执行的文件的编码是正确的。

我已经在这2天了,我的问题是我如何让我的laravel调度程序执行没有任何错误,有没有人有任何经验,在inmotion服务器或类似服务器上部署laravel(流明)应用程序?提前致谢。 :)

1 个答案:

答案 0 :(得分:3)

所以它可能与cli php版本有关但仍然不确定,但我终于得到它与它一起工作:

/usr/bin/php -ea_php 70 -q /home/xxxxx/xxxxx/artisan schedule:run

然后我将第49行的Illuminate / Console / Scheduling / Schedule.php文件编辑为:

return $this->exec("/usr/bin/php -ea_php 70 -q /home/xxxxx/xxxxx/artisan {$command}", $parameters);

现在似乎工作了。 :)