Зависит ли время выполнения echo от скорости соединения с клиентом?

Labutin

Новичок
Зависит ли время выполнения echo от скорости соединения с клиентом?

У меня иногда на сервере время выполнения оператора echo занимает несколько секунд :(
засечка_1
echo $res;
засечка_2
Так вот (засечка_2 - засечка_1) иногда равно 7 секунд!!! Но в большинстве случаев это время меньше 1 сотой секунды.
Размер $res около 100 килобайт.

Зависит ли время выполнения echo от скорости соединения с клиентом?
 

Alexandre

PHPПенсионер
Забыл написать: PHP Version 5.1.6
работа echo от версии не зависит
Тогда почему echo может тормозить?
потому-что в момент выполнения твоего скрипта процессор еще занят более приритетной задачей. (один из ваиантов)
Код:
засечка_1
echo $res;
засечка_2
все исполняется на стороне скрапта(сервера), здесь время занимаемое передачей трафика до клиента ну ни как не катит.
 

gray07

Новичок
Автор оригинала: boombick
когда клиент получает страницу, скрипт уже давно закончил свою работу..
Это если вы используете шаблоны или буферизацию вывода.
Если вы выводите через echo - нет. Контент отдается клиенту постепенно в процессе работы скрипта. Поэтому скрипт и тормозит. Это подтверждают засечки, которые делал Labutin :)
 

Lews

Новичок
Засечки, если это что-то типа microtime(), никак не зависят от того, как данные отдаются клиенту. Получили число и забыли, хоть через час отдай клиенту данные - числа то уже получены в момент работы.
 

Lews

Новичок
Тогда можно списать все на фазы луны :)
Вобще, странная проблема... Как часто появляется большое время, вместо нормального?
Где идет вывод разницы между концом и началом?
Кстати, microtime(true) - удобнее использовать.
 

Labutin

Новичок
При обращении на сервер до 5 запросов в секунду такое бывает примерно 5 раз в минуту.
 

Wicked

Новичок
Вообще, практики у меня, конечно в этом деле никакой, да и архитектуру всяких httpd я знаю плохо... но зачем-то же ставят Nginx перед Apache для быстрого освобождения тяжелых апачевских процессов, и возложения выдачи контента медленным клиентам именно Nginx'ом. Так что лично я не исключаю, что если output buffering в пхп отключен, то echo может так тормозить.

Но хотелось бы услышать мнение знающих людей :)

-~{}~ 26.06.07 17:09:

есть даже такой термин для этого - spoon feeding :)
 

Alexandre

PHPПенсионер
но зачем-то же ставят Nginx перед Apache для быстрого освобождения тяжелых апачевских процессов
Nginx - как правило отдает статический контент: картинки, js, html
все запросы на расширения php проксируются апачу, которые он и выполняет.... это так к слову.
Так что лично я не исключаю, что если output buffering в пхп отключен, то echo может так тормозить
эхо может тормозить, если в это время работает более приоритетный процесс. Нельзя изолированно рассматривать систему, если на серваке одновременно крутится и БД, и почта и черт-знает чего еще.

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

Wicked

Новичок
но зачем-то же ставят Nginx перед Apache для быстрого освобождения тяжелых апачевских процессов
Когда меня собеседовал г-н Зайцев, я ему сначала ответил прям как ты. На что он подкорректировал свой вопрос а-ля "а если речь идет про динамику, то чем тут Nginx может помочь Апачу?". И ответом на такую постановку вопроса было именно то, о чем я говорю - spoon feeding. Но тогда я этого еще не знал :)

http://www.mysqlperformanceblog.com/2007/02/05/why-do-you-need-many-apache-children/ - Spoon Feeding Clients

Только, как я и говорю, я не совсем уверен, могут ли slow clients сказываться на времени выполнения пхпшного echo, хотя в случае с выключенной буферизацией мне это кажется вполне реальным.
 

Alexandre

PHPПенсионер
И ответом на такую постановку вопроса было именно то, о чем я говорю - spoon feeding.
согл, есть и этот момент, там еще куча всяких тонкостей, например для создания устойчивого персистконнекшен....

извини за темность - а кто такой г-н Зайцев?
 
Сверху