我可以使用STDOUT并仍然循环脚本吗?(PHP/批处理)

我可以使用STDOUT并仍然循环脚本吗?(PHP/批处理),php,batch-file,Php,Batch File,我正在尝试用php批量生成一个带有命令的控制台脚本, 我发现了这个脚本: for(;;){ fwrite(STDOUT, "\n"); $name = fgets(STDIN); fwrite(STDOUT, "Hello $name"); sleep(1); } 但它在每个循环中都会停止, 我可以做一个循环并使用这个函数吗? 谢谢。尝试:忽略用户中止(true) 您可以使用stream_select()等待数据出现在标准数据表中。可选的超时值允许您在没有输入时执行其他操作。以下代码将每隔

我正在尝试用php批量生成一个带有命令的控制台脚本, 我发现了这个脚本:

for(;;){

fwrite(STDOUT, "\n");
$name = fgets(STDIN);
fwrite(STDOUT, "Hello $name");

sleep(1);
}
但它在每个循环中都会停止, 我可以做一个循环并使用这个函数吗? 谢谢。

尝试:忽略用户中止(true)


您可以使用
stream_select()
等待数据出现在标准数据表中。可选的超时值允许您在没有输入时执行其他操作。以下代码将每隔200毫秒打印一次“等待…”,直到您输入内容:

for(;;){
    $read = array(STDIN);
    $write = NULL;
    $except = NULL;
    if(stream_select($read, $write, $except, 0, 200000) > 0) {
        if($read) {
            $name = fgets(STDIN);
            fwrite(STDOUT, "Hello $name");
        }
    } else {
        fwrite(STDOUT, "Waiting...\n");
    }
}

它在每个循环上都会停止,因为它正在等待来自STDIN的输入-这就是你的意思吗?它是什么意思“在每个循环上停止?”你有错误吗?是的,我需要它循环,并在写入命令时接受命令。当然,它会停止。在每次迭代中,它都在等待来自
STDIN
的输入。你期望会发生什么?是的,但我希望它在后台循环,如果writen init是一个很好的尝试,那么它会执行命令,但它没有工作,设置了tryd ini_集(“max_execution_time”,1);并设置时间限制(0);但它不起作用:/