php永远不会结束循环

ala*_*agu 5 php loops

我是php的新手,谢谢你的时间:)

我需要一个功能,它可以通过它自己在php中帮助自己使用corn.for我已经得到了以下代码,这对我很有用,但因为它是一个永无止境的循环,它会导致我的服务器或脚本出现任何问题,如果有的话给我一些建议或替代方案.谢谢.

$interval=60; //minutes
set_time_limit(0);

while (1){
    $now=time();
    #do the routine job, trigger a php function and what not.
    sleep($interval*60-(time()-$now));
}
Run Code Online (Sandbox Code Playgroud)

Hyd*_* B. 8

我们在实时系统环境中使用无限循环来基本等待传入的SMS然后处理它.我们发现以这种方式这样做会导致服务器资源密集,并且不得不重新启动服务器以释放内存.

我们遇到的另一个问题是当您在浏览器中执行带有无限循环的脚本时,即使您点击停止按钮,它也将继续运行,除非您重新启动Apache.

    while (1){ //infinite loop
    // write code to insert text to a file
    // The file size will still continue to grow 
    //even when you click 'stop' in your browser.
    }
Run Code Online (Sandbox Code Playgroud)

解决方案是在命令行上将PHP脚本作为deamon运行.这是如何做:

nohup php myscript.php &

&把你的程序在后台运行.

我们不仅发现这种方法的内存密集程度较低,而且还可以通过运行以下命令在不重新启动apache的情况下将其终止:

kill processid

编辑:正如Dagon指出的那样,这并不是将PHP作为"守护进程"运行的真正方式,但使用该nohup命令可以被视为穷人将进程作为守护进程运行的方式.