php artisan 命令的 Cron 作业

问题描述 投票:0回答:3

当我通常运行命令时,我是从

/var/www/project/html/current/
执行的,它看起来像这样
php artisan import:myData
。这很好用。

但是当我将其作为 cron 作业运行时,我无法让它工作,我已经尝试了以下 cron 作业。

*/3 * * * 1-5 cd /var/www/project/html/current/ php artisan import:myData >/dev/null 2>&1

*/3 * * * 1-5 /var/www/project/html/current/ php artisan import:myData >/dev/null 2>&1

*/3 * * * 1-5 /usr/local/bin/php /var/www/project/html/current/ php artisan import:myData >/dev/null 2>&1

有人有建议吗?

谢谢

cron laravel-artisan
3个回答
11
投票

看这里:

https://laravel.com/docs/5.6/scheduling

您将

* * * * * php /path-to-your-project/artisan schedule:run >> /dev/null 2>&1
添加到 cron 选项卡中,该选项卡运行 artisan Schedule:run,然后将控制台命令及其调度参数添加到调度内核中,laravel 处理其余的:)

来自文档:

<?php

namespace App\Console;

use DB;
use Illuminate\Console\Scheduling\Schedule;
use Illuminate\Foundation\Console\Kernel as ConsoleKernel;

class Kernel extends ConsoleKernel
{
    /**
     * The Artisan commands provided by your application.
     *
     * @var array
     */
    protected $commands = [
        //
    ];

    /**
     * Define the application's command schedule.
     *
     * @param  \Illuminate\Console\Scheduling\Schedule  $schedule
     * @return void
     */
    protected function schedule(Schedule $schedule)
    {
        $schedule->call(function () {
            DB::table('recent_users')->delete();
        })->daily();
    }
}

编辑:

您还指定了一条奇怪的工匠之路,请尝试:

*/3 * * * 1-5 cd /var/www/project/html/current/artisan import:myData >/dev/null 2>&1

而不是

*/3 * * * 1-5 cd /var/www/project/html/current/ php artisan import:myData >/dev/null 2>&1

4
投票

在 crontab 中添加此作业

*/3 * * * 1-5 cd /var/www/project/html/current && php artisan import:myData >/dev/null 2>&1

您忘记将这些字符“&&”放在项目文件夹的路径和 artisan 命令之间

示例:

* * * * * cd /path-to-your-project && php artisan schedule:run >> /dev/null 2>&1

0
投票

如果您运行多个 PHP 版本,有时默认版本将无法工作。例如 Laravel 10/11 正在寻找 8.2 和 8.3 版本。 因此,为了使用所需版本运行 artisan 命令,请使用以下命令:

* * * * * cd /home/myaccountname/mydomain.com && /opt/cpanel/ea-php82/root/usr/bin/php artisan schedule:run >/dev/null 2>&1

这适用于 cPanel 帐户,并且您的帐户设置可能会有所不同。这对我来说适用于 PHP 8.2 和 Laravel 10。

© www.soinside.com 2019 - 2024. All rights reserved.