>  기사  >  백엔드 개발  >  PHP 예약 작업에 대한 샘플 코드 공유

PHP 예약 작업에 대한 샘플 코드 공유

黄舟
黄舟원래의
2018-05-15 14:23:132417검색

이전에 PHP 예약 작업의 원리와 예약 작업의 예약 실행 구현에 대해 소개했습니다. 때로는 프로젝트에서 원격 데이터베이스를 처리해야 하는 경우 오늘은 PHP 예약 작업을 사용해야 하는 경우에 대해 소개하겠습니다. PHP 예약 작업 처리의 예!

이번에는 PHP를 사용하여 예약된 작업을 구현하는 데 주로ignore_user_abort() set_time_limit(0) sleep() 세 가지 함수를 사용합니다.

Example

<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(&#39;copy1032&#39;)">复制代码</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(&#39;test.txt&#39;,&#39;a&#39;); 
fwrite($fp,&#39;test&#39;); 
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(&#39;copy7070&#39;)">复制代码</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 &#39;测试&#39;.time().&#39;<br/>&#39;; 
 sleep($interval);// 等待5s    
}while(true);
//方法2---sleep 定时执行
require_once &#39;./curlClass.php&#39;;//引入文件
$curl=new httpCurl(&#39;www.phpernote.com&#39;);//实例化
$stime=$curl->getmicrotime();
for($i=0;$i<=10;$i ){
 echo &#39;测试&#39;.time().&#39;<br/>&#39;; 
 sleep($interval);// 等待5s
}
ob_flush();
flush();
$etime=$curl->getmicrotime();
echo &#39;<hr>&#39;;
echo round(($etime-stime),4);//程序执行时间

</td> </tr> </table>

Function intignore_user_abort:

함수명 자체에서 "사용자의 영향을 무시한다"는 의미로 해석될 수 있습니다.
소위 사용자가 참조하기 때문입니다. 클라이언트, 즉 브라우저
그래서 추가 설명은 "브라우저의 영향을 무시합니다"입니다.

그럼 영향은 브라우저의 종료 및 예외를 의미하는 것입니다

즉, , 이 기능이 있는 PHP 프로그램에서는 브라우저가 닫혀도 프로그램이 완료될 때까지 계속 실행되는 경우가 있습니다. 예를 들어 100초 동안 실행해야 하는 코드가 있는데 이번에는 너무 길어요. 대부분의 사용자는 60초 동안 기다릴 수 없습니다. 그냥 닫으세요.

이 때 프로그램이 종료되면 데이터 이상, 불일치 또는 오류가 발생할 수 있습니다. 프로그램을 계속 실행해야 하는 경우 사용할 수 있습니다


매개변수는 true와 false, true는 무시, false를 의미합니다. 그냥 무시하지 마세요

구체적인 구현 과정에서 개인적으로 PHP의 예약된 작업 실행 효율성이 높지 않다고 생각합니다. 예약된 작업 실행 작업은 상대적으로 셸에 맡겨집니다. 이 방법은 셸에서 구현하기가 너무 어렵습니다.

2. 리눅스 스크립트 프로그램

여기서 주로 crontab 명령이 사용됩니다.

사용 방법:

crontab   filecrontab [ -u user ] [ -u user ] { -l | -r | -e }

설명:

crontab은 사용자가 고정된 시간 또는 고정된 간격으로 프로그램을 실행하는 데 사용됩니다. crontab에서 쉘 스크립트를 실행한 다음 PHP가 쉘을 호출하도록 합니다. 이는 Linux의 특성을 활용하며 PHP 자체 언어의 특성으로 간주되어서는 안 됩니다.

Crontab에서 스크립트를 실행하려면 URL을 사용하세요

PHP 스크립트인 경우 URL에 의해 트리거될 수 있으므로 lynx, 컬 또는 wget을 사용하여 Crontab을 구성할 수 있습니다.


아래 예는 Lynx 텍스트 브라우저를 사용하여 URL에 액세스하여 매시간 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(&#39;copy7213&#39;)">复制代码</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(&#39;copy6465&#39;)">复制代码</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 옵션은 자동 모드를 나타냅니다. "-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(&#39;copy1200&#39;)">复制代码</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는 예약된 작업과 연속 프로세스 인스턴스를 구현합니다. fsockopen


php 예약된 작업을 구현하여 사용자 연결 상태를 감지합니다

위 내용은 PHP 예약 작업에 대한 샘플 코드 공유의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.