【问题标题】:How to run laravel 5.2 artisan command on cron job on hostgator hosting server cpanel?如何在 hostgator 托管服务器 cpanel 上的 cron 作业上运行 laravel 5.2 artisan 命令?
【发布时间】:2016-12-12 18:19:42
【问题描述】:

我创建了一个示例计划作业,以在 Laravel 5.2 中的特定时间后运行。这在 localhost 到 artisan 命令上运行良好。

我在本地服务器上运行这个命令: php artisan Demo:Cron

现在我在 HostGator 托管服务器上的 cPanel 的高级选项 cron 作业中添加此任务。但它不起作用。

这是我正在尝试的命令:

cd /home/pofindia/public_html/beta-var1/ && /usr/local/bin/php artisan Demo:Cron

PHP 版本:默认为 5.4。 这是我的示例文件

<?php

namespace App\Console\Commands;

use Illuminate\Console\Command;
use DB;

class DemoCron extends Command
{
    /**
     * The name and signature of the console command.
     *
     * @var string
     */
    protected $signature = 'demo:cron';

    /**
     * The console command description.
     *
     * @var string
     */
    protected $description = 'Command description';

    /**
     * Create a new command instance.
     *
     * @return void
     */
    public function __construct()
    {
        parent::__construct();
    }

    /**
     * Execute the console command.
     *
     * @return mixed
     */
    public function handle()
    {
        DB::table('items')->insert(['name'=>'hello new']);
        $this->info('Demo:Cron Cummand Run successfully!');
    }
}

【问题讨论】:

  • 可能运行/usr/local/bin/php /home/pofindia/public_html/beta-var1/artisan Demo:Cron
  • 感谢您的回复,但它对我不起作用。 cpanel 的设置是否有问题...或从托管服务提供商处激活某些内容。如果是的话如何检查..
  • 那么最好问问hostgator的家伙
  • 尝试删除DB的电话,只留下$this-&gt;info()。

标签: php cron laravel-5.2


【解决方案1】:

运行

which php

要查看 php 可执行文件的位置,请复制该路径。

crontab -e

(我假设这是您的工匠所在的项目根目录 /home/pofindia/public_html/beta-var1/ 但这需要您向其中添加工匠,所以 /home/pofindia/public_html/beta-var1/artisan)

添加 crontab 条目

* * * * * /usr/local/bin/php  /home/pofindia/public_html/beta-var1/artisan Demo:Cron

实际上你在这里所做的只是提供绝对路径

【讨论】:

  • 这个答案对我来说似乎是正确的,并且与我的回应方式相似。为了运行 cron 作业,您需要能够使用 crontab -e 编辑服务器上的 crontab 条目。请注意,crons 是按用户运行的,因此如果您遇到问题,您需要确保用户(root、ubuntu 等)有权在其路径中为 cron 条目执行 php 和 artisan 命令
【解决方案2】:

这是我测试过的一个快速破解方法,它的工作原理。它适用于 cpanel 或其他托管平台

  1. 创建一条路由,例如 /mycron,并将其指向一个控制器方法,例如“myCronMethod”。
  2. 在 myCronMethod 中,按如下方式调用您的命令

    Artisan::call("cache:clear");

    或者你的命令,即

    Artisan::call("Demo:Cron");

//确保你在顶部使用工匠门面,如下所示

use Illuminate\Support\Facades\Artisan;

3。然后现在您可以将您的 cron 设置为调用您刚刚创建的上述路由,即

*/5 * * * * curl --request GET 'http://myapplication.com/mycron

或

*/5 * * * * /usr/bin/php -q /home/CpanelUsername/public_html/myapplication/mycron

简化示例 //路由

Route::get('/mycron', ['uses'=>'MyController@myCronMethod']);

//控制器

use Illuminate\Support\Facades\Artisan;

class MyController extends Controller
{

    public function myCronMethod(){
        Artisan::call("cache:clear");
        Artisan::call("Demo:Cron");
    }

}

【讨论】:

  • 谢谢你的回答,但我想你不明白我的问题。我要问的是我如何告诉主机运行我的 cron 工作。我需要在 cron 设置中设置的路径是什么
  • 那么你打算如何在没有cronjob 的情况下调用你的route? @Sweety 的问题是她/他不能在主机面板上运行 cronjab。
  • */5 * * * * curl --request GET 'myapplication.com/mycron' 或 */5 * * * * /usr/bin/php -q /home/CpanelUsername/public_html/myapplication/迈克龙
【解决方案3】:

似乎在 Laravel 5.2 中命令名称是区分大小写的。

我刚刚尝试了全新的 Laravel 5.2 安装:

$ php artisan Demo:Cron

[Symfony\Component\Console\Exception\CommandNotFoundException]  
There are no commands defined in the "Demo" namespace.          

Did you mean this?                                              
    demo                                                        

鉴于:

$ php artisan demo:cron
Demo:Cron Command Run successfully

因此,解决方案是使用demo:cron,正如它在命令的$signature 中定义的那样。

【讨论】:

    【解决方案4】:

    要求 HostGator 将 MAILTO="your@email.com" 添加到您的 cron spool。

    然后,让它运行,看看它是否给你任何输出错误或其他错误。

    如果您收到一封电子邮件说“演示:Cron Cummand 运行成功!”那你就知道它有效了

    如果您收到一封电子邮件,请通过工单/聊天报告错误,他们应该能够帮助您修复 PHP/artisan 执行。

    我可能会说的一件事是在你的 cron 中调用 php artisan demo:cron 之前 cd ~/public_html/beta-var1 而不是指定绝对路径。确保您的 cron 中没有 &amp;&gt;/dev/null 或任何隐藏或重定向 STDOUT/STDERR 的东西。一旦你让它工作,你可以通过删除$this-&gt;info();调用来抑制输出

    【讨论】:

    • 我已经添加了我的电子邮件,这是我的命令 /usr/local/bin/php /home3/username_path/public_html/projectName/artisan user:update 这是好/有效
    【解决方案5】:

    您可以通过此工匠命令手动运行 cron 作业

    php artisan schedule:run
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-06-30
      • 2017-10-20
      • 2020-06-28
      • 1970-01-01
      • 2021-11-07
      • 1970-01-01
      • 1970-01-01
      • 2021-01-18
      相关资源
      最近更新 更多