>  기사  >  백엔드 개발  >  예정된 task_php 기술의 PHP 구현에 대한 자세한 설명

예정된 task_php 기술의 PHP 구현에 대한 자세한 설명

WBOY
WBOY원래의
2016-05-16 20:02:281002검색

이런 점에서 PHP는 상대적으로 약하다고 해야 할까요? PHP로만 구현한다면 다음과 같이 구현할 수 있습니다.

<&#63;php
 ignore_user_abort();//关闭浏览器后,继续执行php代码
 set_time_limit(0);//程序执行时间无限制
 $sleep_time = 1;//多长时间执行一次
 do{
 $fp = fopen('test.txt','a+');
 fwrite($fp,"这是一个php博客:phpddt.com \n");
 fclose($fp);
 sleep($sleep_time);
 }while(true);
 
&#63;>

하지만 스크립트를 실행하면 브라우저를 닫아도 프로그램을 전혀 멈출 수 없기 때문에 스크립트를 실행하려면 스위치가 필요하고 그 동안 외부 파일을 도입하면 됩니다. 루프에서는 스위치 변수만 포함하면 됩니다. 그러면 다음과 같이 달성할 수 있습니다:
다음 내용으로 외부 가져온 변수 파일 switch.php를 만듭니다.

<&#63;php
return 1;//1执行脚本 0退出执行脚本
&#63;>

개선된 스크립트는 다음과 같습니다.

<&#63;php
 ignore_user_abort();//关闭浏览器后,继续执行php代码
 set_time_limit(0);//程序执行时间无限制
 $sleep_time = 5;//多长时间执行一次
 $switch = include 'switch.php';
 while($switch){
 $switch = include 'switch.php';
 $fp = fopen('test.txt','a+');
 fwrite($fp,"这是一个php博客:phpddt.com $switch \n");
 fclose($fp);
 sleep($sleep_time);
 }
 exit();
 
&#63;>

이 스크립트는 테스트용으로만 가능하며, 구체적인 효율성이 높으면 안 됩니다. 램프의 경우 crontab을 사용하여 구현할 수 있습니다.
약간의 코드를 추가하세요:

ignore_user_abort();//关掉浏览器,PHP脚本也可以继续执行.
set_time_limit(0);// 通过set_time_limit(0)可以让程序无限制的执行下去
$interval=60*30;// 每隔半小时运行
do{
  //这里是你要执行的代码  
  sleep($interval);// 等待5分钟
}while(true);

PHP에서 예약된 실행 작업을 구현하는 방법에 대한 내용은 나중에 공유할 내용이 있으니 놓치지 마세요.

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