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

藏色散人
リリース: 2019-11-15 14:04:52
転載
3221 人が閲覧しました

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 までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!