-1

我试图用 php 批量创建一个带有命令的控制台脚本,我发现了这个脚本:

for(;;){

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

sleep(1);
}

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

4

2 回答 2

4

您可以使用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");
    }
}
于 2012-09-25T14:36:49.853 回答
-1

尝试:ignore_user_abort(true);

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

于 2012-09-25T14:31:28.420 回答