ホームページ >PHPフレームワーク >Laravel >Laravel Cronのスケジュールされたタスク「ジャンピングピット」ポイント
Laravel でスケジュールされたタスクの実行は cron を通じて実装されます。公式 Web サイトのドキュメントは単純な 1 行の Cron コードです
* * * * * php /path-to-your-project/artisan schedule:run >> /dev/null 2>&1
しかし、実際の使用プロセスでは、Linux と Cron に慣れていない場合に注意してください。私たちは、小さな落とし穴を編集して記録し、すべての人を助けることができることを願って共有しました。
ピット 1: 環境変数
Cron が有効にならない場合は、Cron 実行環境変数が正しくないことが原因である可能性があります。
コマンドを実行します
env > /tmp/env.output
/tmp/env.output ファイルを開き、PATH フィールドの行全体を corntab ファイルの先頭に追加します。corntab ファイルは /var にあります。 /spool/cron ディレクトリ
crontab ファイルの例
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/opt/mysql/bin:/opt/php7/bin:/opt/memcached/bin:/root/bin * * * * * php /path-to-your-project/artisan schedule:run >> /dev/null 2>&1
##ピット 2: Cron 実行ユーザーにより Laravel ログが書き込み不能になる#Cron は、 crontab -e コマンドは root ユーザーに属します。スケジュールされている場合、タスクが実行中にアクティブにログを書き込むか、キャッチされない例外が発生した場合、root 権限を持つログ ファイルが作成され、最終的に php- の www アカウントが作成されます。 fpm で書き込みができなくなります。
そのため、cron作成時にユーザーを指定する必要があります
crontab -u www -e
個人管理システムでは、php-fpmの実行ユーザーがwwwとなっているため、実際の状況に合わせてコードを調整してください。
ピット 3: cron コンテンツの最後の行にキャリッジ リターンがありません上記 2 つの問題を解決した後でも、それでも cron が実行されない場合は、次の手順を実行してください。ご確認ください
* * * * * php /path-to-your-project/artisan schedule:run >> /dev/null 2>&1
コードの最後には復帰と改行が含まれています。
この罠はエンジニアを午後中ずっと悩ませました...
以上がLaravel Cronのスケジュールされたタスク「ジャンピングピット」ポイントの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。