PHP守护程序自动重启失败

时间:2011-01-24 20:14:55

标签: linux batch-file daemon php-5.3

我有一个作为守护进程运行的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();
    }

感谢您的帮助!

1 个答案:

答案 0 :(得分:3)

一种方法是使用一个运行守护进程的BASH脚本。

#!/bin/bash

while [ 1 ]; do
  ./my_php_daemon
done

然后只要你想重启它就退出你的php守护进程。