簡體   English   中英

在 Mac 上啟動 Laravel cron 作業

[英]Starting the Laravel cron job on a Mac

我在Laravel 5.4調度程序中安排了一個命令,並想在Mac OS X El Capitan上啟動 Laravel cron。

應用程序/控制台/Kernel.php

<?php
namespace App\Console;

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

class Kernel extends ConsoleKernel
{
    protected $commands = [
        'App\Console\Commands\GetToken'
    ];

    protected function schedule(Schedule $schedule) {
        $schedule->command('gettoken')->everyMinute();
    }

    protected function commands() {
        require base_path('routes/console.php');
    }
}

我的 GetToken.php 進行 API 調用,然后更改數據庫。 我相信這工作正常,因為我可以使用以下命令直接從 cli 運行任務:

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

要編輯我的 cron 文件,我使用:

env EDITOR=nano crontab -e

然后我補充:

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

我用 ctrl+o 保存並用 ctrl+x 退出。

重新編輯文件顯示更改已保存。

運行crontab -l顯示我輸入到 crontab 文件中的文本。

我的 cron 從不運行。 我只能通過使用我上面提到的命令手動運行來讓它運行一次。

不是直接回答你的問題,而是提出另一種解決方案:

如果你想為你的開發環境設置 cron 作業,最好使用Homestead ,因為它符合 Linux 標准。

對於我直接在 macOS 內開發的小項目,我在項目根目錄(在單獨的終端選項卡中)運行以下命令,讓我的作業每分鍾運行一次:

while true; do php artisan schedule:run; sleep 60; done

這有助於確保 cron 作業僅在我開發時運行。 當我完成后,我Ctrl+C該命令並且可以確保在我不觀看時不會發生任何意外。

此外,它讓我可以自由地調整間隔,只需為 sleep 命令選擇另一個秒數。 這可以節省開發時間。

更新 Laravel 8.x

Laravel 現在將上述內容作為單個工匠命令提供

php artisan schedule:work

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM