[英]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.