ホームページ >バックエンド開発 >PHPチュートリアル >PHPのスケジュールタスクcrontabの詳しい説明
最近、スケジュールされたタスクに関する多くの質問に遭遇しました。正直に言うと、PHP スクリプト自体には、スケジュールされたタスクを作成するために組み合わせられる機能が 1 つまたは 2 つありますが、最初の選択肢は、システム タスクを計画することです。 Win であろうと Linux システムであろうと、タスク計画機能を使用する必要があります。 以下は、Linux のスケジュールされたタスクの詳細な説明です。長すぎるため、私が直接見つけました。必要に応じて、これを使用してタスクを定期的に実行します。具体的な PHP ファイルについてはあまり話さないでください~
cron は、手動でジョブを実行できる Linux 上のスケジュールされた実行ツールです。介入。 Cron は Linux の組み込みサービスですが、自動的には開始されないため、次の方法でサービスを開始および終了できます:
/sbin/service crond start //サービスを開始します
/sbin/service crond stop //サービスを閉じます
/sbin /service crond restart //サービスを再起動します
/sbin/service crond reload //設定を再ロードします
システムの起動時にこのサービスを自動的に開始することもできます:
/etc/rc .d/rc.local スクリプトを最後に追加します:
/sbin/service crond start
Cron サービスがすでにプロセスに入っているので、このサービスを使用できます。Cron サービスは、誰でも使用できる次のインターフェイスを提供します。 1. crontab コマンドを使用して直接編集します。
cron サービスには、cron サービスを設定するための crontab コマンドが用意されています。
crontab -u // 特定のユーザーの cron サービスを設定します。 root ユーザーは、このコマンドを実行するときにこのパラメーターが必要です。
crontab -l //特定のユーザーの cron サービスの詳細を一覧表示します
crontab -r //特定のユーザーの cron サービスを削除します
crontab -e //特定のユーザーの cron サービスを編集します
たとえば、root は自分の cron 設定を表示できます: crontab -u root -l
別の例として、root は fred の cron 設定を削除したいと考えています: crontab -u fred -r
cron サービスを編集する場合、編集されたコンテンツにはいくつかの形式があります規則に従って、次のように入力します。 crontab -u root -e
vi 編集モードに入ります。 編集された内容は次の形式に従う必要があります: */1 * * * * ls >> /tmp/ls.txt;この形式は時刻を設定するもので、後半は実行するコマンドが多すぎる場合、これらのコマンドをスクリプトに記述して、ここでスクリプトを直接呼び出すことができます。 。最初の 5 つの * 記号は 5 つの数字を表し、その値の範囲と意味は次のとおりです:
分 (0-59)
時間 (0-23)
日付 (1-) 31)
月 (1-12)
週 (0-6) //0 は日曜日を表します
数字に加えて、いくつかの特殊記号があります: '*'、'/'、'-'、','、*値範囲内のすべての数値を表します。「/」はすべてを意味します。「*/5」は 5 単位ごとを意味します。「-」は特定の数値から特定の数値までを意味します。「,」は複数の離散的な数値を区切ります。問題を説明するために、いくつかの例を示します。
毎朝 6 時
0 6 * * * echo 'おはようございます。' >> //単純な echo では出力がないことに注意してください。 cron は出力をルート メールボックスに電子メールで送信するため、画面上で確認できます。
2 時間ごと
0 */2 * * * echo '休憩してください。' >> /tmp/test.txt
午後 11 時から午前 8 時までの 2 時間ごと
0 23-7/2, 8 * * * echo '良い夢を見てください:)' >> /tmp/test.txt
毎月 4 日と毎週月曜日から水曜日の午前 11 時に
0 11 4 * 1-3 コマンドライン
をクリックしてください1 月 1 日午前 4 時
0 4 1 1 * コマンドライン
ユーザーの cron 設定を編集すると、毎回 cron は /var/spool/cron の下に自動的に作成されます。 このユーザーの cron 情報。このユーザーはこのファイルに記録されます。このファイルは直接編集できず、crontab -e でのみ編集できます。 cron が開始されると、毎回このファイルが読み取られ、そのファイル内のコマンドを実行する必要があるかどうかがチェックされます。したがって、このファイルを変更した後に cron サービスを再起動する必要はありません。
2. /etc/crontab ファイルを編集して cron を設定します
cron サービスは /var/spool/cron 内のすべてのファイルを 1 分ごとに読み取る必要があるだけでなく、/etc/crontab も 1 回読み取る必要があります。 cron サービスを使用するようにこのファイルを設定します。 crontab を使用した構成は特定のユーザー用ですが、/etc/crontab の編集はシステム用のタスクです。このファイルのファイル形式は次のとおりです:
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root //エラーが発生した場合、またはデータ出力がある場合、データはメールとして送信されます このアカウントに送信します
HOME=/ //ユーザーが実行するパス、これがルートディレクトリです
# run-parts
01 * * * * root run-parts /etc/cron.hourly // /etc/cron を 1 時間ごとに実行します。 .hourly のスクリプトを実行します
02 4 * * * root run-parts /etc/cron.daily // /etc/cron.daily のスクリプトを毎日実行します
22 4 * * 0 root run -parts /etc/cron.weekly // /etc/cron.weekly にあるスクリプトを毎週実行します
42 4 1 * * root run-parts /etc/cron.monthly // /etc/cron.monthly にあるスクリプトを実行します毎月
「run -parts」パラメータに注意してください。このパラメータを削除すると、後でフォルダー名の代わりに実行するスクリプトの名前を記述することができます。
-------------------------------------------------
基本フォーマット:
* * * * * コマンド
タイムシェアリング、日、月、週のコマンド
最初の列は1から59までの分を表します。各分は*または*/1で表されます
2番目の列は時間1を表します
3 列目は日付 1 から 31 を表します
3 列目は日付 1 から 31 を表します
列 4 は月 1 から 12 を表します
5 列は曜日を示します 0 から 6 (0 は日曜日を意味します)
列 6 は日付を表します実行するコマンド
crontab ファイルの例:
30 21 * * * /usr/local/etc /rc.d/lighttpd restart
上記の例は、lighttpd が毎晩 21:30 に再起動されることを示しています。
45 4 1,10,22 * * /usr/local/etc/rc.d/lighttpd restart
上記の例は、lighttpd が毎月 1 日、10 日、22 日の 4:45 に再起動されることを示しています。
10 1 * * 6,0 /usr/local/etc/rc.d/lighttpd restart
上記の例は、lighttpd が毎週土曜日と日曜日の 1:10 に再起動されることを示しています。
0,30 18-23 * * * /usr/local/etc/rc.d/lighttpd restart
上記の例は、毎日 18:00 から 23:00 までの間、30 分ごとに lighttpd を再起動することを意味します。
0 23 * * 6 /usr/local/etc/rc.d/lighttpd restart
上記の例は、lighttpd が毎週土曜日の午後 11 時に再起動されることを示しています。
* */1 * * * /usr/local/etc/rc.d/lighttpd 再起動
lighttpd を 1 時間ごとに再起動
* 23-7/1 * * * /usr/local/etc/rc.d/lighttpd 再起動
午後 11 時から午前 7 時の間、1 時間ごとに lighttpd を再起動します
0 11 4 * mon-wed /usr/local/etc/rc.d/lighttpd restart
毎月 4 日と毎週月曜日から水曜日 11 時に lighttpd を再起動します
0 4 1 jan * /usr/local/etc/rc.d/lighttpd restart
1月1日4時にlighttpdを再起動
上記では、PHP のスケジュールされたタスク crontab についてさまざまな側面を含めて詳しく説明しましたが、PHP チュートリアルに興味のある友人に役立つことを願っています。
🎜