- Регистрация
- 13 Янв 2026
- Сообщения
- 5
- Реакции
- 0
Когда пишешь под консоль приложение, которое будет делать много повторяющихся операций, например загружать индексы с десяти тысяч доменов, хочется видеть сколько осталось до конца. Долгие годы я писал и испытывал разные решения: от громоздких классов, до примитивного эха с инкрементом. И наконец найдено решение которое является простым и эффективным, но самое главное оно позволяет продолжить с точки прерывания. Если понадобится выводить счётчик в stderr раскоментируйте где надо и закоментируйте где нет.
Код:
<?php
// Usage
/*{{{
$STRING = [];
for($i = 100; $i < 105; $i += 1) {
$STRING[$i] = '';
}
$cd = count($STRING);
foreach($STRING as $key => $string) {
if(!cd($cd, $key, 3)) continue;
sleep(1);
}
}}}*/
function cd(int &$cd, $key = '', int $start = -1) // countdown
{
//if(!(defined('VERBOSE') && VERBOSE)) return(true);
$cd -= 1;
if($key !== '') $key = strval($key).' ';
if($start !== -1 && $start < $cd) return(false);
$string = sprintf("\r%05d {$key}", $cd);
echo($string);
//file_put_contents('php://stderr', $string);
if($cd == 0) echo("\n");
//if($cd == 0) file_put_contents('php://stderr', "\n");
return(true);
}