ホームページ >バックエンド開発 >PHPの問題 >PHPを毎日自動的に実行する方法

PHPを毎日自動的に実行する方法

藏色散人
藏色散人オリジナル
2021-12-30 09:34:264102ブラウズ

php の毎日の自動実行を実現する方法: 1. サーバーに crontab をインストールします; 2. crontab のスケジュールされた実行タスクのリストを表示します; 3. 時間設定ルールに従って設定します。

PHPを毎日自動的に実行する方法

この記事の動作環境: linux5.9.8 システム、PHP バージョン 7.1、Dell G3 コンピューター。

php を毎日定期的に実行することはできません。実行できるのは Java または C だけです。php はページにアクセスせずにコードを移動しないためです。しかし、国を救う方法はあります。

あなたは、ページ これは毎日定期的に実行するページです。オペレーティング システムに応じて、スケジュールされたタスクを実行し、定期的にこのページにアクセスします。この記事では、Linux システムを例として取り上げます。

PHP はスケジュールされたタスクを実装します

最初にコマンドを使用して、サービスが実行されているかどうかを確認します

systemctl status crond.service

crontab がインストールされていない場合は、

yum install vixie-cron
yum install crontabs

一般的なコマンド

systemctl restart crond.service #启动服务 systemctl reload crond.service #重新载入配置 systemctl status crond.service #查看crontab服务状态 systemctl enable crond.service #开机自启动

サービスを開始した後、コマンドを入力できます(編集するにはiを押します)

crontab -u root -e #进入定时任务编辑

crontabのスケジュールされた実行を表示しますタスク リスト

crontab -l

関連パラメータ

基本格式 :  
*    *  *   *   *  command  
分  时  日  月  周   命令  
第1列表示分钟1~59 每分钟用*或者 */1表示 (每分钟用或者 */1表示,/n表示每n分钟,例如*/8就是每8分钟的意思,下面也是类推)
第2列表示小时1~23(0表示0点)  
第3列表示日期1~31  
第4列表示月份1~12  
第5列标识号星期0~6(0表示星期天)  
第6列要运行的命令

動的ログを確認します (ステータス 0x004b#012 を取得するためにメールされた 33 バイトの出力が多数ある場合は、https://bbs.aliyun に移動してください) .com/simple/t135851.html):

tail -f /var/log/cron

Example

*/2 * * * * curl -o /home/index.html www.baidu.com #每隔两分钟使用curl 访问www.baidu.com 并将结果写入/home/index.html 文件
00 * * * * lynx -dump https://www.yourdomain.com/script.php   #当前时间的分钟数为00时,执行该定时任务
lynx -dump https://www.yourdomain.com/script.php  #通过lynx访问这个url。我们在使用中主要用到lynx、curl、wget来实现对url的远程访问,而如果要提高效率,直接用php去执行本地php文件是最佳选择
00 */2 * * * /usr/bin/php /home/www/script.php  #直接用php去执行本地php文件

このステートメントは、Linux 内部 PHP 環境を通じて 2 時間ごとの 0 分に script.php を実行できます。これはそうではないことに注意してください。 URL 経由でアクセスされますが、サーバー環境を介して実行されますが、サーバー環境をバイパスして直接実行されるため、効率は当然高くなります。

/usr/bin/php を使用する必要がある理由については、次のコマンドを使用できます: that php または whereis php View

crontabでは、実行結果をファイルに出力します。次に、このファイルの実行ステータスを確認します。例:

*/1 * * * * /usr/bin/php /data/dou/web/api/cron.php >> /data/dou/web/cron.txt

コマンドの連続実行:
順番に実行 (`;` で区切る)

cmd1;
cmd2;
cmd3;

ロジックと (区切って) で実行by && )

cmd1&&cmd2&&cmd3;
cmd4;

論理 OR で実行: (|| 分割)

cmd1||cmd2||cmd3;
cmd4;

つまり、戻り値が 0 の場合、論理 AND は次のようになります。 0 でない場合は論理 OR が実行され続けます。通常のプログラムの論理は論理 OR ショートと同じです (`?` が戻り値です)。正しく実行された場合、戻り値は 0 です。 echo $? を通じてテストできます。 "return" ")
combination:
cmd1;

cmd2||cmd3&&cmd4;

を検索してください。

cmd5;
最初に cmd1 を実行し、次に cmd2 を実行します。cmd2 の戻り値が 0 でない場合は cmd3 を実行し、cmd3 の戻り値が 0 である場合は cmd4 を実行し、その後順番に実行を続けます

時間設定ルールの例:

1. ルールを 1 分ごとに定期的に実行します:
1 分ごとに実行: */1 * * * *または * * * * *
5 分ごとに実行: */5 * * * *

2. 1 時間ごとに定期的に実行 ルール:
毎時実行: 0 * * * * または 0 */1 * * *
毎日午前 7 時に実行: 0 7 * * *
毎日午前 7 時 10 分に実行: 10 7 * * *

3. ルールを毎日定期的に実行します:
毎日実行 0 0 * * *

4. ルールを毎週定期的に実行します:
Execute each year 0 0 * * 0

5. ルールを毎月定期的に実行します:
Execute 0 0 1 毎月 * *

6. ルールを毎年定期的に実行します:
Execute 0 0 1 each year 1 *

7. その他の例
5 * * * *毎時 5 分に実行される ls コマンドを指定します
30 5 * * * ls 毎日 5:30 に実行される ls コマンドを指定します
30 7 8 * * ls は、ls コマンドを指定します。毎月 8 日の 7:30 に実行される
30 5 8 6 * ls は、毎年 6 月 8 日の 5:30 に実行される ls コマンドを指定します
30 6 * * 0 ls は、実行されることを指定します毎週日曜日の 6:30 に ls コマンドを実行します [注: 0 は日曜日を意味し、1 は月曜日 1 を意味し、以下同様です。また、英語でも表現できます (sun は日曜日を意味し、mon は月曜日を意味します)。 ]
30 3 10,20 * * ls 毎月 10 日と 20 日の 3:30 に ls コマンドを実行します [注: 不連続な複数の期間を接続するには、「,」を使用します]
25 8-11 * * * ls 毎日 8 時から 11 時までの 25 分に ls コマンドを実行します [注: 連続するピリオドは「-」で接続します]
*/15 * * * * ls 毎回 ls コマンドを実行します15 分 [つまり、毎時 0、15、30、45、60 分に ls コマンドを実行]
30 6 */10 * * ls 各月の 10 日ごとに 6:30 に ls コマンドを実行 [つまり、毎月 1、11、21 日の 31 日の 6:30 に ls コマンドを 1 回実行します。 ]

【推奨学習: PHP ビデオ チュートリアル ]

以上がPHPを毎日自動的に実行する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。