我是通过命令行运行的。当循环运行时,有什么办法可以暂停代码的执行?理想的情况是,我可以按一个键暂停,然后另一个键恢复。如果我不按暂停键,则循环继续,直到$ i == 1000
<?php
echo "How long should the code sleep between increments?\n";
echo ">> ";
$sleep = trim(fgets(STDIN));
for ($i = 1; $i <= 1000; $i++) {
echo "$i\n";
sleep($sleep);
}
这是我对代码的实际需求的一个非常简化的例子。
答案 0 :(得分:2)
我不确定我的代码是否是最佳解决方案,但它可以正常工作。
function checkResume()
{
$r = false;
while (!$r) {
if (fgets(STDIN) == "r") {
$r = true;
}
}
}
function checkPause()
{
$input = fgets(STDIN);
if (!empty($input) && $input == "p") {
return true;
}
return false;
}
echo "How long should the code sleep between increments?\n";
echo ">> ";
$sleep = trim(fgets(STDIN));
echo "\nStart ...\n";
stream_set_blocking(STDIN, false);
for ($i = 1; $i <= 1000; $i++) {
if (checkPause()) {
echo "wait for resume \n";
checkResume();
}
echo "$i\n";
sleep($sleep);
}
希望得到这个帮助。