Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Время исполнения скрипта определяется неверно
 
 автор: Владимир55   (11.11.2012 в 20:32)   письмо автору
 
 

Скрипт производит загрузку информации из текстового файла, ее обработку и закачку в базу данных, а в браузер выводится только сообщение о количестве произведенных закачек. То есть, общение с браузером минимальное, без 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 секунд!

Почему же время исполнения определяется неверно?

  Ответить  
 
 автор: Sfinks   (11.11.2012 в 23:01)   письмо автору
 
   для: Владимир55   (11.11.2012 в 20:32)
 

Не в опере случайно? Не знаю с чем связано, но я такое видел, тоже на элементарном выводе. Ждал результата около 30 секунд, стал замерять, получил результат 0.24 сек. Запустил тоже самое в хроме - все стало летать.

  Ответить  
 
 автор: Владимир55   (12.11.2012 в 11:10)   письмо автору
7 Кб
 
   для: Sfinks   (11.11.2012 в 23:01)
 

Запускал в ИЕ. Но и в Хроме тоже неверные показания.

По идее, тут браузер, вроде бы, в деле и не участвует. Похоже, что РНР как-то иначе выполняет сценарий, нежели перечисляются операторы в программе...

Тут уже и не в самой погрешности измерения дело, а хотелось бы в принципе разобраться, почему РНР так работат.

А может быть, эти данные браузер держит?
Ждет от сервера "особого приглашения"?
Собственно, только этим и можно объяснить влияние типа браузера...

  Ответить  
 
 автор: cheops   (12.11.2012 в 21:47)   письмо автору
 
   для: Владимир55   (11.11.2012 в 20:32)
 

Все остальное - время, затрачиваемое на пересылку информации по сети или манипуляция с информацией на стороне сервера уже после того, как отработал PHP-скрипт.

  Ответить  
 
 автор: Владимир55   (12.11.2012 в 21:57)   письмо автору
 
   для: cheops   (12.11.2012 в 21:47)
 

Пересылка тут занимает ничтожное время, поскольку инфы на два килобайта, так что этим можно и пренебречь. А вот манипуляция на сервере - тут может быть что угодно. Можно ли этот процесс проконтролировать по времени исполнения?

Кстати, что же это за процессы после отработки скрипта, длительность которых в десять раз больше работы самого скрипта?

Ради любопытства я сохранил результаты работы в текстовый файл - так время его создания вполне вписывается в диапазон работы скрипта. А если продукт уже создан, то какая же может быть работа на сервере, с ним связанная?

  Ответить  
 
 автор: cheops   (12.11.2012 в 22:52)   письмо автору
 
   для: Владимир55   (12.11.2012 в 21:57)
 

Там много чего может происходить, например, результат может пережевывать memcached или nginx. Ситуация воспроизводится или такое время только после первого обращения (а потом отдача ускоряется)?

  Ответить  
 
 автор: Владимир55   (12.11.2012 в 23:16)   письмо автору
 
   для: cheops   (12.11.2012 в 22:52)
 

Ситуация совершенно стабильна при двадцати сеансах подряд.
Добавление
ob_flush();
flush();
не повлияло.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования