我试图用 php 批量创建一个带有命令的控制台脚本,我发现了这个脚本:
for(;;){
fwrite(STDOUT, "\n");
$name = fgets(STDIN);
fwrite(STDOUT, "Hello $name");
sleep(1);
}
但是它在每个循环上都会停止,我可以制作一个循环并使用这个功能吗?谢谢 ..
我试图用 php 批量创建一个带有命令的控制台脚本,我发现了这个脚本:
for(;;){
fwrite(STDOUT, "\n");
$name = fgets(STDIN);
fwrite(STDOUT, "Hello $name");
sleep(1);
}
但是它在每个循环上都会停止,我可以制作一个循环并使用这个功能吗?谢谢 ..
您可以使用stream_select()
等待数据出现在 STDIN 中。可选的超时值让您在没有输入时执行其他操作。以下代码将每 200 毫秒打印一次“Waiting...”,直到您输入内容:
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");
}
}
尝试:ignore_user_abort(true);