以前、PHP スケジュールされたタスクの原理と、スケジュールされたタスクのスケジュールされた実行の実装を紹介しましたが、プロジェクトでリモート データベースを処理する必要がある場合、今日はそれを紹介します。 phpのスケジュールされたタスクの処理例を紹介します。
今回、PHPを使用してスケジュールされたタスクを実装するには、主にignore_user_abort()set_time_limit(0)sleep()の3つの関数を使用します。
例
<table width="620" align="center" border="0" cellpadding="1" cellspacing="1" style="background:#FB7"> <tr> <td width="464" height="27" bgcolor="#FFE7CE"> 代码如下</td> <td width="109" align="center" bgcolor="#FFE7CE" style="cursor:pointer;" onclick="doCopy('copy1032')">复制代码</td> </tr> <tr> <td height="auto" colspan="2" valign="top" bgcolor="#FFFFFF" style="padding:10px;" class="copyclass" id=copy1032> <?php ignore_user_abort(); //即使Client断开(如关掉浏览器),PHP脚本也可以继续执行. set_time_limit(0); // 执行时间为无限制,php默认的执行时间是30秒,通过set_time_limit(0)可以让程序无限制的执行下去 $interval=60*5; // 每隔5分钟运行 do{ $fp = fopen('test.txt','a'); fwrite($fp,'test'); fclose($fp); sleep($interval); // 等待5分钟 }while(true); ?> </td> </tr> </table>
具体的なコードは以下の通りです:
<table width="620" align="center" border="0" cellpadding="1" cellspacing="1" style="background:#FB7"> <tr> <td width="464" height="27" bgcolor="#FFE7CE"> 代码如下</td> <td width="109" align="center" bgcolor="#FFE7CE" style="cursor:pointer;" onclick="doCopy('copy7070')">复制代码</td> </tr> <tr> <td height="auto" colspan="2" valign="top" bgcolor="#FFFFFF" style="padding:10px;" class="copyclass" id=copy7070> <?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('www.phpernote.com');//实例化 $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);//程序执行时间 </td> </tr> </table>
Function intignore_user_abort:
関数名自体からすると「ユーザーの影響を無視する」と解釈できます
いわゆるユーザーが参照しているためクライアント、つまりブラウザへの影響です
それでは、さらに説明すると、「ブラウザの影響を無視する」です
では、影響とは何を指すのでしょうか?影響とは、ブラウザの終了と例外を指します
つまり, この関数を備えた PHP プログラムでは、ブラウザを閉じても、プログラムが完了するまで実行され続けることがあります。たとえば、100 秒間実行する必要があるコードがありますが、今回はそれです。ほとんどのユーザーは待ちきれず、60 秒待っても耐えられません。この時点でプログラムが終了すると、データの異常、不整合、またはエラーが発生する可能性があります。プログラムの実行を継続するには、それを使用できます
パラメーターは true と false で、true は無視、false を意味します。無視しないでください
crontab filecrontab [ -u user ] [ -u user ] { -l | -r | -e }
Crontab でスクリプトを実行するには URL を使用します
PHP スクリプトの場合URL によってトリガーできます。lynx、curl、または wget を使用して Crontab を設定できます。
以下の例は、Lynx テキスト ブラウザを使用して URL にアクセスし、1 時間ごとに PHP スクリプトを実行します。 Lynx テキスト ブラウザは、デフォルトで会話モードを使用して URL を開きます。ただし、以下に示すように、lynx コマンド ラインで -dump オプションを使用して、URL 出力を標準出力に変換します。
<table width="620" align="center" border="0" cellpadding="1" cellspacing="1" style="background:#FB7"> <tr> <td width="464" height="27" bgcolor="#FFE7CE"> 代码如下</td> <td width="109" align="center" bgcolor="#FFE7CE" style="cursor:pointer;" onclick="doCopy('copy7213')">复制代码</td> </tr> <tr> <td height="auto" colspan="2" valign="top" bgcolor="#FFFFFF" style="padding:10px;" class="copyclass" id=copy7213> 00 * * * * lynx -dump http://www.111cn.net /script.php </td> </tr> </table>
URLを使用して
URLにアクセスし、5分ごとにPHPスクリプトを実行する例です。 Curl は、デフォルトで出力を標準出力に表示します。 「curl -o」オプションを使用して、スクリプトの出力を一時ファイルにダンプすることもできます。<table width="620" align="center" border="0" cellpadding="1" cellspacing="1" style="background:#FB7"> <tr> <td width="464" height="27" bgcolor="#FFE7CE"> 代码如下</td> <td width="109" align="center" bgcolor="#FFE7CE" style="cursor:pointer;" onclick="doCopy('copy6465')">复制代码</td> </tr> <tr> <td height="auto" colspan="2" valign="top" bgcolor="#FFFFFF" style="padding:10px;" class="copyclass" id=copy6465> */5 * * * * /usr/bin/curl -o temp.txt http://www.111cn.net /script.php</td> </tr> </table>
<table width="620" align="center" border="0" cellpadding="1" cellspacing="1" style="background:#FB7"> <tr> <td width="464" height="27" bgcolor="#FFE7CE"> 代码如下</td> <td width="109" align="center" bgcolor="#FFE7CE" style="cursor:pointer;" onclick="doCopy('copy1200')">复制代码</td> </tr> <tr> <td height="auto" colspan="2" valign="top" bgcolor="#FFFFFF" style="padding:10px;" class="copyclass" id=copy1200> */10 * * * * /usr/bin/wget -q -O temp.txt http://www.111cn.net /script.php </td> </tr> </table></td> </tr> </table>
この記事は、実際のプロジェクト開発プロセスを通じて実装された PHP 計画タスクの例であり、開発作業に役立ちます。
関連する推奨事項:PHP でスケジュールされたタスクのスケジュールされた実行を実装するにはどうすればよいですか?
以上がPHP スケジュールされたタスクのサンプル コード共有の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。