ホームページ >バックエンド開発 >PHPチュートリアル >PHP でスケジュールされたタスクを実装するにはどうすればよいですか?
PHP のスケジュールされたタスクの実装原理については、前回の記事でご紹介しました。PHP のスケジュールされたタスクの実装原理については、引き続きご紹介します。
コースの推奨事項: "PHP オンライン トレーニング コース"
1. Windows のスケジュールされたタスク
1.test.php
という名前の PHP プログラムを作成します。は次のとおりです
test.php
,内容如下所示
<? $fp = fopen("test.txt", "a+"); fwrite($fp, date("Y-m-d H:i:s") . " 成功成功了!\n"); fclose($fp); ?>
程序大胆地写,什么includerequire尽管用,都没问题
2、新建Bat
文件,命名为test.bat,内容如下所示:
D:\php\php.exe -q D:\website\test.php
3、建立WINDOWS计划任务:
开始–>控制面板–>任务计划–>添加任务计划
浏览文件夹选择上面的bat
文件
设置时间和密码(登陆WINDOWS的)
保存即可了。
4、over! 可以右键计划任务点“运行”试试
二、linux 的脚本实现
一、在Crontab
中使用PHP执行脚本
就像在Crontab中调用普通的shell脚本一样(具体Crontab用法),使用PHP程序来调用PHP脚本。
每一小时执行myscript.php
如下:
# crontab -e 00 * * * * /usr/local/bin/php /home/john/myscript.php
/usr/local/bin/php
为PHP程序的路径。
二、在Crontab中使用URL执行脚本
如果你的PHP脚本可以通过URL触发,你可以使用lynx或curl或wget来配置你的Crontab。
下面的例子是使用Lynx文本浏览器访问URL来每小时执行PHP脚本。Lynx文本浏览器默认使用对话方式打开URL。但是,像下面的,我在lynx命令行中使用-dump
选项来把URL的输出转换来标准输出。
00 * * * * lynx -dump http: //www.centos.bz/myscript.php
下面的例子是使用CURL访问URL来每5分执行PHP脚本。Curl默认在标准输出显示输出。使用”curl -o”选项,你也可以把脚本的输出转储到临时文件。
*/5 * * * * /usr/bin/curl -o temp.txt http: //www.centos.bz/myscript.php
下面的例子是使用WGET访问URL来每10分执行PHP脚本。-q选项表示安静模式。”-O temp.txt”表示输出会发送到临时文件
*/10 * * * * /usr/bin/wget -q -O temp.txt http: //www.centos.bz/myscript.php
三、PHP实现定时执行计划任务
使用php让浏览器刷新需要解决几个问题
1、PHP脚本执行时间限制,默认的是30m
解决办法:set_time_limit();
或者修改PHP.ini 设置max_execution_time
时间(不推荐)
2、如果客户端浏览器关闭,程序可能就被迫终止,解决办法:ignore_user_abort
即使关闭页面依然正常执行
3、如果程序一直执行很有可能会消耗大量的资源,解决办法使用sleep
<?php ignore_user_abort();//关掉浏览器,PHP脚本也可以继续执行. set_time_limit(3000);// 通过set_time_limit(0)可以让程序无限制的执行下去 $interval=5;// 每隔5s运行 //方法1--死循环 do{ echo '测试'.time().'<br/>'; sleep($interval);// 等待5s }while(true); //方法2---sleep 定时执行 require_once './curlClass.php';//引入文件 $curl = new httpCurl();//实例化 $stime = $curl->getmicrotime(); for($i=0;$i<=10;$i++){ echo '测试'.time().'<br/>'; sleep($interval);// 等待5s } ob_flush(); flush(); $etime = $curl->getmicrotime(); echo '<hr>'; echo round(($etime-stime),4);//程序执行时间
プログラムは大胆に記述されていますが、どのような includerequire を使用しても問題ありません
2. 新しい Bat
を作成します> ファイルを作成し、test .bat という名前を付けます。内容は次のとおりです:
rrreee
スタート -> コントロール パネル -> タスク スケジュール -> タスク プランの追加
フォルダーを参照して、上の bat
ファイルを選択します
時間とパスワード (WINDOWS にログイン) 保存します。
1. PHP を使用して Crontab
でスクリプトを実行します Crontab と同じように 通常のシェル スクリプト (Crontab の特定の使用法) を呼び出すのと同じように、PHP プログラムを使用して PHP スクリプトを呼び出します。
myscript.php
を 1 時間ごとに実行します: 🎜🎜🎜rrreee🎜🎜🎜🎜 🎜🎜rrreee 🎜🎜🎜次の例は、CURLを使用してURLにアクセスし、5分ごとにPHPスクリプトを実行する例です。 Curl は、デフォルトで出力を標準出力に表示します。 「curl -o」オプションを使用して、スクリプトの出力を一時ファイルにダンプすることもできます。 🎜 🎜🎜rrreee🎜 以下の例は、WGET を使用して URL にアクセスし、実行します。 10分ごとのPHPスクリプト。 -q オプションは、Quiet モードを示します。 「-O temp.txt」は、出力が一時ファイルに送信されることを意味します🎜 🎜🎜rrreee 🎜🎜3. PHP はスケジュールされたタスクのスケジュールされた実行を実装します🎜🎜🎜PHP を使用してブラウザを更新するには、いくつかの問題を解決する必要があります🎜🎜1. デフォルトは /usr/local/bin/php
(PHP 用)プログラムのパス。 🎜🎜🎜2. URL を使用して Crontab でスクリプトを実行する🎜🎜🎜PHP スクリプトを URL によってトリガーできる場合は、lynx、curl、または wget を使用して Crontab を構成できます。 🎜🎜以下の例は、Lynx テキスト ブラウザを使用して URL にアクセスし、1 時間ごとに PHP スクリプトを実行します。 Lynx テキスト ブラウザは、デフォルトで会話モードを使用して URL を開きます。ただし、以下に示すように、lynx コマンド ラインで -dump
オプションを使用して、URL 出力を標準出力に変換します。 🎜30m
です。 : set_time_limit();または、PHP.ini を変更して max_execution_time
時間を設定します (非推奨) 🎜🎜🎜2. クライアントのブラウザが閉じている場合、プログラムは強制的に解決策 : ignore_user_abort
ページが閉じられても、通常どおり実行されます 🎜🎜🎜3. プログラムが実行され続ける場合、解決策は、を使用することです。 sleep
でプログラムをしばらくスリープさせてから、PHP のスケジュールされた実行コード🎜🎜🎜🎜rrreee🎜を実行すると、効率があまり高くないことがわかりました🎜🎜🎜概要:🎜🎜🎜🎜これこの記事では、Windows スケジュールされたタスク、Linux スクリプト、および PHP を使用してスケジュールされたタスクを実行します。この例により、PHP によるスケジュールされたタスクのスケジュールされた実行についてより直接的に理解できるようになります。 🎜🎜🎜関連する推奨事項: 🎜🎜🎜スケジュールされたタスクを実装する PHP の原理分析🎜🎜🎜🎜🎜php スケジュールされたタスクと連続プロセス (fsockopen) の例🎜🎜🎜🎜🎜php スケジュールされたタスクによるユーザー接続ステータスの検出🎜 🎜🎜
以上がPHP でスケジュールされたタスクを実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。