我使用popen打开一个流到另外两个php脚本:
$proc[0] = popen("/usr/srv/php /my/folder/myscript.php 0 &", "r");
$proc[1] = popen("/usr/srv/php /my/folder/myscript.php 1 &", "r");
if (!stream_set_timeout($proc[0], 1, 0)) print "stream_set_timeout failed on stream 1";
if (!stream_set_timeout($proc[1], 1, 0)) print "stream_set_timeout failed on stream 2";
发生的事情是stream_set_timeout在两个流上都失败了(返回false,在linux和Windows机器上使用php 5.3进行测试)。在两个流上使用fread工作正常,但我想从两个流“同时”读取并且fread继续阻止从另一个流读取(顺便说一句,stream_set_blocking也返回失败,返回false)。
知道为什么这不起作用吗?