Окончание работы скрипта

Обсуждение новых возможности программы, которые в будущем хотелось бы видеть в ней
Ответить
marselkin
Сообщения: 9
Зарегистрирован: 07 авг 2013, 17:07

Окончание работы скрипта

Сообщение marselkin » 04 дек 2013, 13:39

Добавьте, пожалуйста, расчет времени окончания работы скрипты.
Иногда хочется примерно увидеть когда скрипт закончит свою работу.

Допусти есть цикл на n количество итераций
Вначале цикла ставим какую-то пометку для функции и в конце итерации какую-то пометку и передаем функции общее количество итераций, которое должно выполниться. А оно высчитывая среднее значение времени, которое требуется на выполнение итераций высчитывает через сколько времени все это дело примерно закончится.

Это конечно самому можно написать. Но у меня не хватит ума на это.
Спасибо!

Аватара пользователя
Support
Site Admin
Сообщения: 1000
Зарегистрирован: 10 апр 2009, 17:45
Контактная информация:

Re: Окончание работы скрипта

Сообщение Support » 04 дек 2013, 17:17

Добрый день. Можете воспользоваться простейшим кодом, который вставляется в самое начало скрипта:
function getmicrotime()
{
list($usec, $sec) = explode(" ", microtime());
return ((float)$usec + (float)$sec);
}
$time_start = getmicrotime();

…. СКРИПТ ….

в самом конце скрипта

echo 'Затрачено времени: ', (getmicrotime() - $time_start),' сек.';

marselkin
Сообщения: 9
Зарегистрирован: 07 авг 2013, 17:07

Re: Окончание работы скрипта

Сообщение marselkin » 04 дек 2013, 22:01

Если я Вас правильно понял Вы предложили узнать сколько было затрачено времени на выполнение скрипта после его выполнения.
А я спрашивал про сколько будет затрачено во время выполнения скрипта.

т.е. выводит эти данные через echo, а там выводится например "Окончание цикла через 2 часа, 15 минут" или "Осталось 15 минут"

т.е. функция (или что-то там) берет время которое затратило на одну итерацию цикла, н-р 10 сек
а всего предстоит 100 итераций, он и выводит "осталось 1000 сек (или 16 минут и т.д)" т.е. 10 сек * 100
следующая итерация заняла 15 сек. (15 сек + 10 сек ) / 2 = 12,5 сек (в среднем на итерацию)
соответственно в среднем уже на итерацию уходит 12,5 сек. функция выводит "осталось 1237 сек (или 20 минут)"
12,5 сек * 99 оставшихся итераций = 1237 сек

PocketDevil
Сообщения: 65
Зарегистрирован: 08 апр 2009, 20:32

Re: Окончание работы скрипта

Сообщение PocketDevil » 04 дек 2013, 23:39

Мне кажется добиться точных данных не получиться, поэтому я бы на вашем месте посмотрел в сторону функции прогресс бара:
http://humanemulator.net/objects/WINDOW ... ss_bar.php

PS: Было бы не плохо, если бы она еще и в RT версии работала! :roll:

Аватара пользователя
Support
Site Admin
Сообщения: 1000
Зарегистрирован: 10 апр 2009, 17:45
Контактная информация:

Re: Окончание работы скрипта

Сообщение Support » 05 дек 2013, 12:36

Да, точных данных все равно не получится узнать по ряду различных причин(интернет, прокси, сервисы капчи, не правильно отработанный скрипт...).
Как вариант стоит попробовать прогресс бар.

marselkin
Сообщения: 9
Зарегистрирован: 07 авг 2013, 17:07

Re: Окончание работы скрипта

Сообщение marselkin » 05 дек 2013, 16:50

Для RT версии я использую - http://humanemulator.net/objects/WINDOW ... _title.php

где нибудь в цикле $app->set_title("[ ".$i." / ".count(массив)." ]");

и у меня в заголовке программы выводит [ 10 / 24032 ] т.е. выполнено 10 из 24032

marselkin
Сообщения: 9
Зарегистрирован: 07 авг 2013, 17:07

Re: Окончание работы скрипта

Сообщение marselkin » 05 дек 2013, 16:58

Точных данных конечно не добиться.

А как допустим при копировании любого файла Виндовс отображает "осталось 5 минут". Тоже ведь не точно. Это зависит от качества того места винчестера на которые будут записываться следующие мегабайты, от скорости работы компьютера на момент записи и т.д. Но ведь Виндовс уверенно отображает эту информацию.
Стоит пару следующих мегабайт скопировать с медленной скоростью, то и примерное время окончание увеличивается.
Пару мегабайт записалось быстрее - время окончания уменьшается.

Ответить