我目前正在使用以下脚本来保持 phirehose 进程始终运行。我希望能够从 php 控制它,所以我也在 php 而不是 bash 中编写了启动器脚本。
我添加了一些代码让我知道发生了什么类型的错误或非错误,但总是尝试重新连接。
phirehose-launcher.php:
<?php
while(1) {
passthru('/usr/bin/php my-phirehose-script.php', $code);
// if exits with error, show error but try to reconnect
if ($code) {
print "Encountered an error.\n";
print "Return code: $code.\n";
print "Waiting 5 seconds and will retry connection.\n";
sleep(5);
} else {
// if Phirehose exits gracefully, restart it
print "Script exited. Restarting.\n";
}
// Try again in 5 secs
sleep(5);
}
如果你想让它在后台运行,我还没有尝试过,但它应该可以在启动器(如下面的代码)或启动器脚本本身的脚本名称后添加一个 & 。
passthru('/usr/bin/php my-phirehose-script.php &', $code);
在我的 PhirehoseConsumer 类中,我重写了 log 方法来修剪输出以进行日志记录。
protected function log($message,$level='notice')
{
switch($level) {
case 'error':
print "Phirehose [ERROR]: $message\n";
break;
// should email these or text
case 'info':
print "Phirehose [INFO]: $message\n";
break;
case 'notice':
default:
// meh
break;
}
}
我看到的不是脚本退出,而是这样的记录输出:
Phirehose [INFO]: Idle timeout: No stream activity for > 90 seconds. Reconnecting.
您可以终止启动器 php 脚本并终止子进程。这是控制过程的简单方法。它会捕获空闲超时并从 phirehose 中退出,这样即使流媒体中断或互联网连接中断,该进程也会继续运行。