ホームページ >PHPフレームワーク >Laravel >Laravel Cronのスケジュールされたタスク「ジャンピングピット」ポイント

Laravel Cronのスケジュールされたタスク「ジャンピングピット」ポイント

藏色散人
藏色散人転載
2019-11-15 14:04:523375ブラウズ

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 サイトの他の関連記事を参照してください。

声明:
この記事はsegmentfault.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。