Добавьте, пожалуйста, расчет времени окончания работы скрипты.
Иногда хочется примерно увидеть когда скрипт закончит свою работу.
Допусти есть цикл на n количество итераций
Вначале цикла ставим какую-то пометку для функции и в конце итерации какую-то пометку и передаем функции общее количество итераций, которое должно выполниться. А оно высчитывая среднее значение времени, которое требуется на выполнение итераций высчитывает через сколько времени все это дело примерно закончится.
Это конечно самому можно написать. Но у меня не хватит ума на это.
Спасибо!
Окончание работы скрипта
Re: Окончание работы скрипта
Добрый день. Можете воспользоваться простейшим кодом, который вставляется в самое начало скрипта:
function getmicrotime()
{
list($usec, $sec) = explode(" ", microtime());
return ((float)$usec + (float)$sec);
}
$time_start = getmicrotime();
…. СКРИПТ ….
в самом конце скрипта
echo 'Затрачено времени: ', (getmicrotime() - $time_start),' сек.';
function getmicrotime()
{
list($usec, $sec) = explode(" ", microtime());
return ((float)$usec + (float)$sec);
}
$time_start = getmicrotime();
…. СКРИПТ ….
в самом конце скрипта
echo 'Затрачено времени: ', (getmicrotime() - $time_start),' сек.';
Re: Окончание работы скрипта
Если я Вас правильно понял Вы предложили узнать сколько было затрачено времени на выполнение скрипта после его выполнения.
А я спрашивал про сколько будет затрачено во время выполнения скрипта.
т.е. выводит эти данные через echo, а там выводится например "Окончание цикла через 2 часа, 15 минут" или "Осталось 15 минут"
т.е. функция (или что-то там) берет время которое затратило на одну итерацию цикла, н-р 10 сек
а всего предстоит 100 итераций, он и выводит "осталось 1000 сек (или 16 минут и т.д)" т.е. 10 сек * 100
следующая итерация заняла 15 сек. (15 сек + 10 сек ) / 2 = 12,5 сек (в среднем на итерацию)
соответственно в среднем уже на итерацию уходит 12,5 сек. функция выводит "осталось 1237 сек (или 20 минут)"
12,5 сек * 99 оставшихся итераций = 1237 сек
А я спрашивал про сколько будет затрачено во время выполнения скрипта.
т.е. выводит эти данные через echo, а там выводится например "Окончание цикла через 2 часа, 15 минут" или "Осталось 15 минут"
т.е. функция (или что-то там) берет время которое затратило на одну итерацию цикла, н-р 10 сек
а всего предстоит 100 итераций, он и выводит "осталось 1000 сек (или 16 минут и т.д)" т.е. 10 сек * 100
следующая итерация заняла 15 сек. (15 сек + 10 сек ) / 2 = 12,5 сек (в среднем на итерацию)
соответственно в среднем уже на итерацию уходит 12,5 сек. функция выводит "осталось 1237 сек (или 20 минут)"
12,5 сек * 99 оставшихся итераций = 1237 сек
-
- Сообщения: 65
- Зарегистрирован: 08 апр 2009, 20:32
Re: Окончание работы скрипта
Мне кажется добиться точных данных не получиться, поэтому я бы на вашем месте посмотрел в сторону функции прогресс бара:
http://humanemulator.net/objects/WINDOW ... ss_bar.php
PS: Было бы не плохо, если бы она еще и в RT версии работала!
http://humanemulator.net/objects/WINDOW ... ss_bar.php
PS: Было бы не плохо, если бы она еще и в RT версии работала!
Re: Окончание работы скрипта
Да, точных данных все равно не получится узнать по ряду различных причин(интернет, прокси, сервисы капчи, не правильно отработанный скрипт...).
Как вариант стоит попробовать прогресс бар.
Как вариант стоит попробовать прогресс бар.
Re: Окончание работы скрипта
Для RT версии я использую - http://humanemulator.net/objects/WINDOW ... _title.php
где нибудь в цикле $app->set_title("[ ".$i." / ".count(массив)." ]");
и у меня в заголовке программы выводит [ 10 / 24032 ] т.е. выполнено 10 из 24032
где нибудь в цикле $app->set_title("[ ".$i." / ".count(массив)." ]");
и у меня в заголовке программы выводит [ 10 / 24032 ] т.е. выполнено 10 из 24032
Re: Окончание работы скрипта
Точных данных конечно не добиться.
А как допустим при копировании любого файла Виндовс отображает "осталось 5 минут". Тоже ведь не точно. Это зависит от качества того места винчестера на которые будут записываться следующие мегабайты, от скорости работы компьютера на момент записи и т.д. Но ведь Виндовс уверенно отображает эту информацию.
Стоит пару следующих мегабайт скопировать с медленной скоростью, то и примерное время окончание увеличивается.
Пару мегабайт записалось быстрее - время окончания уменьшается.
А как допустим при копировании любого файла Виндовс отображает "осталось 5 минут". Тоже ведь не точно. Это зависит от качества того места винчестера на которые будут записываться следующие мегабайты, от скорости работы компьютера на момент записи и т.д. Но ведь Виндовс уверенно отображает эту информацию.
Стоит пару следующих мегабайт скопировать с медленной скоростью, то и примерное время окончание увеличивается.
Пару мегабайт записалось быстрее - время окончания уменьшается.