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守护进程。

+0

我喜欢这是唯一的答案,它很简单,并解决了问题,它得到-1没有评论或替代建议... – gravitron 2011-01-26 15:37:10