Я использую Windows 7 и PHP 5.PHP stream_select не работает
У меня есть проблемы с выполнением процесса по proc_open и проверить тайм-аут. я использовал stream_select проверить тайм-аут с этим кодом:
<?php
$descriptorspec = array(
0 => array("file", $infile, "r"), // stdin is a pipe that the child will read from
1 => array("pipe", "w"), // stdout is a pipe that the child will write to
2 => array("pipe", "w") // stderr is a file to write to
);
$prog = @proc_open ($objname.".exe", $descriptorspec, $pipes, "$DOCUMENT_ROOT/judge/temp", null, null);
if(!is_resource($prog)) ErrorResult("","proc_open err");
$streams = array($pipes[1]);
$start = microtime(true);
$ret = stream_select($streams, $a = null,$a = null, 1);
$stop = microtime(true);
?>
Это код C++ я, чтобы проверить, что:
#include<windows.h>
int main(){
Sleep(2000);
return 0;
}
В этом коде нет вывода на всех, но stream_select Безразлично 't ждать 1 с и вернуть 1.
Как я могу это исправить?
Что означают '$ ret' и' $ streams' после возврата 'stream_select'? Укажите «var_dump». Если '$ ret'> 0, тогда' $ streams' не должно быть пустым. Если '$ streams' не пуст, что вы получаете, когда читаете из потоков, содержащихся в нем? – Leigh
Также вы уверены, что '$ pipes [1]' правильный? Вы указываете только 2 канала, возможно, '$ pipes [0]' - это то, что вам нужно. – Leigh
$ ret == 1 и $ streams не пуст. Я ничего не могу читать. –