通过命令行暂停PHP进程

时间:2017-09-10 22:03:43

标签: php

我是通过命令行运行的。当循环运行时,有什么办法可以暂停代码的执行?理想的情况是,我可以按一个键暂停,然后另一个键恢复。如果我不按暂停键,则循环继续,直到$ 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);
}

这是我对代码的实际需求的一个非常简化的例子。

1 个答案:

答案 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);
}

希望得到这个帮助。