我要用一个更好的表述问题来抛弃旧问题。我使用twitter流api通过php像下面的脚本。当我通过命令行运行它时。脚本继续运行,当我按ctrl+c脚本停止。这很好,但是我想在后台运行。当用户创建一个新的搜索时,下面的脚本被激活并一直运行,直到给sop一个信号。就像cli版本一样,但是在后台。
我如何做到这一点?
好的,这里有一段代码:
$opts = array(
'http' => array(
'method' => 'POST',
'content' => 'track=ipad'
)
);
$context = stream_context_create($opts);
$stream = fopen('http://test@stream.twitter.com/1/statuses/filter.json','r', false, $context);
while (!feof($stream)) {
if (!($line = stream_get_line($stream, 200000, "n"))) {
continue;
}
$tweet = json_decode($line);
// mysql query
}
我正在运行它
这应该通过从命令行运行php脚本作为守护进程来解决,有很多事情要考虑。
- 系统重启时怎么办?
- 错误发生时怎么办?
- 内存管理呢?
- 监控呢?
Jeroen Keppens在多个PHP会议上的演讲PHP in the dark是一个好的开始。
您可能需要查看ajax
或其他web浏览器方法,如comet或websockets来实现您想要的。
如果你想让它在服务器端运行你应该使用php的exec函数比如:
exec("php-cli runForever.php");
我试图在本教程中做同样的事情。它使用System_Daemon pear包并提供启动/停止函数。