以前、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 は、ユーザーが一定の時間または一定の間隔でプログラムを実行できるようにするために使用されます。 crontab でシェル スクリプトを作成し、PHP にシェルを呼び出させます。これは Linux の特性を利用するものであり、PHP 独自の言語の特性としてカウントされるべきではありません
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>以下の例は、C
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>以下の例は、WGET を使用して URL にアクセスし、10 分ごとに PHP スクリプトを実行します。 -q オプションは、Quiet モードを示します。 「-O temp.txt」は、出力が一時ファイルに送信されることを意味します。
<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 サイトの他の関連記事を参照してください。