PHP - обратный отсчёт

ckpunmkug

Bit
Пользователь
Регистрация
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);
}
 
Сверху