PHP 예약 실행을 구현하는 세 가지 방법
세부 구현
1. Windows 예약 작업
PHP는 win 서버에서 실행되는 경우가 거의 없으며 구체적인 구현에 대해서는 자세히 연구하지 않습니다. 온라인 구현의 원칙은 아마도 bat 스크립트를 작성한 다음 창 작업에서 bat 스크립트를 추가하고 실행하는 것입니다.
2. 리눅스 스크립트 구현
여기서는 crontab 명령을 주로 사용합니다.
사용 방법:
설명:
crontab은 사용자가 고정된 시간이나 고정된 간격으로 프로그램을 실행할 수 있도록 하는 데 사용됩니다
crontab을 사용하여 쉘 스크립트를 작성한 후 PHP가 쉘을 호출하도록 합니다. 이는 Linux의 특성을 사용하는 것이며 PHP 자체 언어의 특성으로 간주되어서는 안 됩니다.
3. PHP는 계획된 작업의 예약된 실행을 구현합니다
PHP를 사용하여 브라우저를 새로 고칠 때 해결해야 할 몇 가지 문제가 있습니다
PHP 스크립트 실행 시간 제한, 기본값은 30m입니다. 해결 방법: set_time_limit(); 또는 PHP.ini를 수정하여 max_execution_time 시간 설정(권장하지 않음)
클라이언트 브라우저가 닫히면 프로그램이 강제로 종료될 수 있습니다. 해결 방법: 페이지가 닫혀도ignore_user_abort는 계속 정상적으로 실행됩니다.
프로그램이 계속 실행되면 많은 리소스를 소비할 가능성이 높습니다. 해결 방법은 휴면 모드를 사용하여 잠시 동안 프로그램을 휴면 상태로 만든 다음 실행하는 것입니다.
PHP 예약 실행 코드:
<?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);//程序执行时间
테스트 중에 이 효율성은 그리 높지 않은 것으로 나타났습니다.
요약:
개인적으로는 PHP의 예약된 작업 실행 효율성이 그다지 높지 않다고 생각합니다. 예약된 작업 실행 작업을 셸에 맡기는 것이 좋습니다.
위는 PHP에서 정기적으로 작업을 실행하는 세 가지 방법입니다. 이전 글의 마지막에 언급한 crontab 명령도 간략하게 소개하겠습니다.