Heim >Backend-Entwicklung >PHP-Tutorial >[100分]PHP守护进程“卡死”所有进程?该怎么处理

[100分]PHP守护进程“卡死”所有进程?该怎么处理

WBOY
WBOYOriginal
2016-06-13 10:25:041641Durchsuche

[100分]PHP守护进程“卡死”所有进程?
菜鸟一枚,需要写个守护进程。查了下资料~随便写了两行测试下

//忽略用户断开
ignore_user_abort(true);
//忽略超时时间
set_time_limit(0);
while(true)
{
  $logContent = date('Y-m-d H:i:s')."\r\n";
  file_put_contents('log.txt', $logContent, FILE_APPEND);

  sleep(10);
}


这东西就是每10秒钟,往日志文件里面写下当前的时间。但是这玩意一执行,发现整个apache就不响应了。就是比如说这个写在a.php里,其它的b.php什么的所有文件都没用了。apache好像给卡死了一样。想知道这是什么情况?



------解决方案--------------------
仅就你的这几行代码,不会出现你说的现象
------解决方案--------------------
#vi log.php

$logContent = date('Y-m-d H:i:s')."\r\n";
file_put_contents('log.txt', $logContent, FILE_APPEND);
?>

#crontab -e 

*/10 * * * * /usr/local/php/bin/php log.php

-------------------------------------------------------

php 文件写绝对路径
------解决方案--------------------
windows

>notepad log.bat

#{your-php-bin-path}php log.php

>schtasks /create /sc minute /mo 10 /tn "php-date-log" /tr log.bat
------解决方案--------------------
服务器限制了单进程 可能
换个浏览器 火狐打开a 谷歌打开 b
别都用ie内核的浏览器。。。
------解决方案--------------------
按理说,不会出现这个问题。你可以尝试把时间改长点试试。
还有,给个建议,PHP想要实现定时执行,windows下可以使用计划任务,linux下可以使用cron,你的这种用法是不建议使用的。并且,你这种写法,当电脑重启或者apache重启之后就无效了,需要把代码再运行一次才能继续执行。

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn