Я запускаю это через командную строку. Когда цикл работает, могу ли я приостановить выполнение кода? В идеальном случае я мог бы нажать клавишу, чтобы приостановить, а затем еще одну клавишу, чтобы возобновить. Если я не нажму клавишу паузы, цикл продолжится до $ 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);
}
Это сильно упрощенный пример моей реальной потребности в коде.
Я не уверен, что мой код — лучшее решение или нет, но он работает.
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);
}
Надеюсь, это поможет.
Других решений пока нет …