PHP守护进程自动重启失败
问题描述:
我有一个PHP脚本作为守护进程运行。每隔一段时间,我都希望脚本休息一下并重新启动,以便在收到信号时清除内存使用情况。PHP守护进程自动重启失败
我一直在看shell_exec();杀死并重新启动PHP脚本,但我想知道是否有更清洁的方法。我也研究过在一批中包装PHP脚本,并在需要时重新启动它,但我只在PHP中有知识。
declare(ticks = 1);
$processID = pcntl_fork();
if ($processID == -1) {
echo "\n Error: The process failed to fork. \n";
} else if ($processID) {
exit;
} else {
}
if (posix_setsid() == -1) {
echo "\n Error: Unable to detach from the terminal window. \n";
}
$posixProcessID = posix_getpid();
$filePointer = fopen("/var/run/addy.pid" , "w");
fwrite($filePointer , $posixProcessID);
fclose($filePointer);
gc_enable();
while (true) {
sleep(1);
print "debug: memory_get_peak_usage: ".memory_get_peak_usage()." debug: memory_get_usage: ".memory_get_usage()."\n";
// STUFF GOES HERE
unset($array);
gc_collect_cycles();
}
谢谢你的帮忙!
答
一种方法是使用BASH脚本来运行守护进程。
#!/bin/bash
while [ 1 ]; do
./my_php_daemon
done
然后只要你想让它重新启动就退出你的php守护进程。
我喜欢这是唯一的答案,它很简单,并解决了问题,它得到-1没有评论或替代建议... – gravitron 2011-01-26 15:37:10