|
|
|
| Скрипт производит загрузку информации из текстового файла, ее обработку и закачку в базу данных, а в браузер выводится только сообщение о количестве произведенных закачек. То есть, общение с браузером минимальное, без AJAX и Java Script .
Для измерения времени исполнения скрипта в самом начале установлен код:
<?php
list($usec, $sec) = explode(" ", microtime());
$start = $sec + $usec;
|
А в конце скрипта такой код:
<?php
// КОНТРОЛЬ ВРЕМЕНИ ИСПОЛНЕНИЯ
list($usec, $sec) = explode(" ", microtime());
$finich = $sec + $usec;
$t_isp = (round (100*($finich - $start)))/100 ;
echo "<br />Время исполнения $t_isp сек. <br />";
|
При этом выводится результат - 7 сек. Но если контролировать по обычным часам, то 65 секунд!
Почему же время исполнения определяется неверно? | |
|
|
|
|
|
|
|
для: Владимир55
(11.11.2012 в 20:32)
| | Не в опере случайно? Не знаю с чем связано, но я такое видел, тоже на элементарном выводе. Ждал результата около 30 секунд, стал замерять, получил результат 0.24 сек. Запустил тоже самое в хроме - все стало летать. | |
|
|
|
|
 7 Кб |
|
|
для: Sfinks
(11.11.2012 в 23:01)
| | Запускал в ИЕ. Но и в Хроме тоже неверные показания.
По идее, тут браузер, вроде бы, в деле и не участвует. Похоже, что РНР как-то иначе выполняет сценарий, нежели перечисляются операторы в программе...
Тут уже и не в самой погрешности измерения дело, а хотелось бы в принципе разобраться, почему РНР так работат.
А может быть, эти данные браузер держит?
Ждет от сервера "особого приглашения"?
Собственно, только этим и можно объяснить влияние типа браузера... | |
|
|
|
|
|
|
|
для: Владимир55
(11.11.2012 в 20:32)
| | Все остальное - время, затрачиваемое на пересылку информации по сети или манипуляция с информацией на стороне сервера уже после того, как отработал PHP-скрипт. | |
|
|
|
|
|
|
|
для: cheops
(12.11.2012 в 21:47)
| | Пересылка тут занимает ничтожное время, поскольку инфы на два килобайта, так что этим можно и пренебречь. А вот манипуляция на сервере - тут может быть что угодно. Можно ли этот процесс проконтролировать по времени исполнения?
Кстати, что же это за процессы после отработки скрипта, длительность которых в десять раз больше работы самого скрипта?
Ради любопытства я сохранил результаты работы в текстовый файл - так время его создания вполне вписывается в диапазон работы скрипта. А если продукт уже создан, то какая же может быть работа на сервере, с ним связанная? | |
|
|
|
|
|
|
|
для: Владимир55
(12.11.2012 в 21:57)
| | Там много чего может происходить, например, результат может пережевывать memcached или nginx. Ситуация воспроизводится или такое время только после первого обращения (а потом отдача ускоряется)? | |
|
|
|
|
|
|
|
для: cheops
(12.11.2012 в 22:52)
| | Ситуация совершенно стабильна при двадцати сеансах подряд.
Добавление
ob_flush();
flush();
не повлияло. | |
|
|
|