php の毎日の自動実行を実現する方法: 1. サーバーに crontab をインストールします; 2. crontab のスケジュールされた実行タスクのリストを表示します; 3. 時間設定ルールに従って設定します。
この記事の動作環境: linux5.9.8 システム、PHP バージョン 7.1、Dell G3 コンピューター。
php を毎日定期的に実行することはできません。実行できるのは Java または C だけです。php はページにアクセスせずにコードを移動しないためです。しかし、国を救う方法はあります。
あなたは、ページ これは毎日定期的に実行するページです。オペレーティング システムに応じて、スケジュールされたタスクを実行し、定期的にこのページにアクセスします。この記事では、Linux システムを例として取り上げます。
PHP はスケジュールされたタスクを実装します
systemctl status crond.service
yum install vixie-cron yum install crontabs
systemctl restart crond.service #启动服务 systemctl reload crond.service #重新载入配置 systemctl status crond.service #查看crontab服务状态 systemctl enable crond.service #开机自启动
crontab -u root -e #进入定时任务编辑
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列要运行的命令
tail -f /var/log/cron
*/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 サイトの他の関連記事を参照してください。