【发布时间】:2012-07-27 04:02:09
【问题描述】:
默认情况下stream_get_contents 等待并侦听 60 秒。
如果我有多个流并且想要连续收听所有流。
在 foreach 中,如果我正在收听一个流,我就无法收听其他流。
连续监听和捕获所有流的流输出的解决方案是什么?
while(true){
//$streamArray is an array of streams obtained by stream_socket_client("tcp://..);
foreach($streamArray as $stream){
fputs($stream,$command);
stream_get_contents($stream); // and update file/DB (Blocking call)
}
}
注意:对于我已经完成的每个流stream_set_blocking( $stream , true );
更新:
我的要求是在一段时间内收听所有流媒体,比如 30 分钟。同时我不能听 2 流。如果我有 5 个流,我的代码就是 time division multiplexing,在 30 分钟内,每个单独的流将只记录 6 分钟
我有一种解决方案,可以对单个流发出 AJAX 请求并独立记录。 当然我不想做这种多重 AJAX 调用方法,因为它会导致更多的代码以及更多的 CPU。
【问题讨论】:
-
我的要求是在一段时间内收听所有流媒体,例如 30 分钟。同时我不能听 2 流。如果我有 5 个流,我的代码只是时分复用,在 30 分钟内,每个单独的流将仅记录 6 分钟
-
我认为你需要运行多个 php 实例来实现这一点。
-
是的 Anze,我想我必须运行多个独立的 ajax 调用。我们是否在 PHP 中通过单实例进行并行监控?
-
你可以使用 APC 或 MemCache 在所有实例上获取全局变量。如果你打算从同一个浏览器使用 ajax,你可以使用 $_SESSION 来保持同步。我希望这就是你的想法?
标签: php sockets stream network-programming streaming