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

时间:2012-09-25 13:57:43

标签: php batch-file

我试图使用php批量生成带有命令的控制台脚本, 我找到了这个脚本:

for(;;){

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

sleep(1);
}

但它在每个循环停止, 我可以制作一个循环并使用此功能吗? 谢谢..

2 个答案:

答案 0 :(得分:4)

您可以使用stream_select()等待数据显示在STDIN中。可选的超时值允许您在没有输入时执行其他操作。以下代码将每隔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");
    }
}

答案 1 :(得分:-1)

尝试:ignore_user_abort(true);

http://php.net/manual/en/function.ignore-user-abort.php