如何在 PHP 中实现"Press Q at any time to quit"



我有一个基于终端的php程序,基本上只是在一个大的for循环中运行,做一堆事情然后退出。我希望能够中断循环,暂停或退出应用程序。 目前我必须点击 ^C 才能退出应用程序(或从另一个终端屏幕杀死它(。任何想法如何实现这一点?

Running program... 
[Press Q to quit and <spacebar> to pause at any time]
text
text
text
...
more text scrolling by

我知道如何退出和暂停,这很容易,但我不确定如何在执行大量其他功能时监控输入。

多谢!

在这里找到答案:从 STDIN 逐行读取而不会阻塞

感谢上面的评论者给了我一些搜索参数,最终得到了正确的答案。

解决方案stream_set_blocking如下图所示:

<?php
$stdin = fopen('php://stdin', 'r');
stream_set_blocking ( $stdin , 0 );
for( $x=0; $x <=10; $x++) {
echo "$xn";
$line = fgets($stdin);  //Doesn't wait for input because blocking is turned off!
if (! empty($line)) {
die();
}
}
?>

相关内容

最新更新