이런 점에서 PHP는 상대적으로 약하다고 해야 할까요? PHP로만 구현한다면 다음과 같이 구현할 수 있습니다.
<?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); ?>
하지만 스크립트를 실행하면 브라우저를 닫아도 프로그램을 전혀 멈출 수 없기 때문에 스크립트를 실행하려면 스위치가 필요하고 그 동안 외부 파일을 도입하면 됩니다. 루프에서는 스위치 변수만 포함하면 됩니다. 그러면 다음과 같이 달성할 수 있습니다:
다음 내용으로 외부 가져온 변수 파일 switch.php를 만듭니다.
<?php return 1;//1执行脚本 0退出执行脚本 ?>
개선된 스크립트는 다음과 같습니다.
<?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(); ?>
이 스크립트는 테스트용으로만 가능하며, 구체적인 효율성이 높으면 안 됩니다. 램프의 경우 crontab을 사용하여 구현할 수 있습니다.
약간의 코드를 추가하세요:
ignore_user_abort();//关掉浏览器,PHP脚本也可以继续执行. set_time_limit(0);// 通过set_time_limit(0)可以让程序无限制的执行下去 $interval=60*30;// 每隔半小时运行 do{ //这里是你要执行的代码 sleep($interval);// 等待5分钟 }while(true);
PHP에서 예약된 실행 작업을 구현하는 방법에 대한 내용은 나중에 공유할 내용이 있으니 놓치지 마세요.