Я надеюсь, кто-то может мне помочь что-то понять. Если я получаю доступ к веб-сайту, который находится на другой стороне планеты, PHP сообщает о времени выполнения страницы ~ microtime(true)
используя простую математику с microtime(true)
). Если я получаю доступ к тому же самому сайту локально на сервере, PHP сообщает ~ 20 мс время выполнения страницы. Кажется, что задержка в сети является фактором времени выполнения PHP, что удивительно для меня, потому что я думал, что вся страница была предоставлена PHP и вернулась в apache для немедленного отправки клиенту (таким образом, время выполнения скрипта будет таким же, независимо от происхождения).
Apache, PHP5 (mod_php), CentOS 5.
Можно ли предположить, что PHP каким-то образом ожидает отправки вывода в браузер, прежде чем продолжить выполнение? У меня есть ощущение, что могут быть некоторые факторы буферизации вывода, связанные с этим, но я действительно не уверен. У меня буферизация вывода включена через php.ini.
Мой вопрос: что происходит, и как моя сетевая латентность влияет на выполнение PHP?
Надеюсь, это было подходящее место, чтобы задать такой вопрос. Я попытался найти SO & google, но мне не повезло найти что-нибудь даже актуальное.
Редактировать Я не говорю об измерении времени, которое требуется для переноса веб-страницы с сервера на клиент. Я прямо говорю о том, как PHP вычисляет, что он выполняется быстрее, когда я загружаю HTML-источник страницы с локальной машины. Тот же сервер, одна и та же страница, согласованные результаты. Я использую curl http://example.com | grep milliseconds
curl http://example.com | grep milliseconds
в обоих местах, чтобы увидеть, что сервер сообщает как время выполнения PHP.
Две разные машины или даже две точно такие же машины с различным серверным программным обеспечением или различными конфигурациями могут иметь серьезные последствия для вашего времени выполнения. Все может случиться. Может произойти засор (это случилось со мной раньше), и внезапно страница загружается на 10 секунд. После этого вы перезагрузите свой браузер, очистите кеш, повторите попытку, и это будет почти мгновенно снова.
Итак, после всего этого вафли, все, что я хочу упомянуть, это не имеет никакого отношения к скорости соединения или, по крайней мере, почти ничего.