Назад | Перейти на главную страницу

Почему такой медленный ответ на localhost?

Я работаю над крошечным проектом PHP для моего друга, и у меня есть настройка среды WAMP для локальной разработки. Я помню дни, когда мой локальный Apache 2.2 отвечал незамедлительно. Увы, теперь, когда я вернулся из долгого отпуска, я нахожу ответы от localhost мучительно медленно.

Обработка HTML-страницы размером 300 Байт занимает около 5 секунд.

Когда я смотрю на диспетчер задач, httpd процессы (2) используют 0% ЦП, и в целом мой компьютер не загружен (загрузка ЦП 0–2%).

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

Для меня установка ServerName собственность в httpd.conf исправлены задержки (в худшем случае до 10 секунд):

# ServerName gives the name and port that the server uses to identify itself.
# This can often be determined automatically, but we recommend you specify
# it explicitly to prevent problems during startup.
#
# If your host doesn't have a registered DNS name, enter its IP address here.
ServerName 127.0.0.1:80

У меня была такая же проблема.

Установка перенаправления localhost на 127.0.0.1 в файле hosts не помогла. Оптимизация сервера MySQL не помогла (InnoDB -> MyISAM, изменение многих директив, связанных с кешем, в my.ini).

Затем я использовал webgrind и сузил проблему до вызова «новый PDO (...)». Изменение

mysql:host=localhost;dbname=dp-ui;charset=utf8 

к

mysql:host=127.0.0.1;dbname=dp-ui;charset=utf8

в dsn для PDO полностью решил проблему! Время загрузки страницы увеличился с 3000 мс до 16 мс.

Однако я действительно сбит с толку, почему строка «127.0.0.1 localhost» в файле hosts не помогла.

Проблема заключалась в основном файле настроек Apache httpd.conf.

Я нашел это:

Есть три способа настроить PHP для работы с Apache 2.x в Windows. Вы можете запускать PHP как обработчик, как CGI или под FastCGI. [Источник]

Итак, я зашел в настройки Apache и увидел, в чем проблема: я настроил его как CGI, вместо того, чтобы загружать его как модуль. Это вызвало php-cgi.exe запускаться и выключаться каждый раз, когда я делал запрос. Это замедляло мой localhost развитие вниз.

Я изменил настройки, чтобы загрузить PHP как Apache МОДУЛЬ и теперь все работает отлично. :)

Чтобы загрузить модуль PHP для Apache 2.x:

1) вставьте следующие строки в httpd.conf

LoadModule php5_module "c:/php/php5apache2.dll"

AddHandler application/x-httpd-php .php

(p.s. изменение C:/php на твой путь. Также замените php5apache **. Dll на существующее имя файла)

2) Чтобы ограничить выполнение PHP только для файлов .php, добавьте это в httpd.conf:

<FilesMatch \.php$> SetHandler application/x-httpd-php </FilesMatch>

3) установить путь к php.ini в httpd.conf (если после перезагрузки выйдет ошибка, то снова удалите эту строку)

PHPIniDir "C:/php"

Спасибо всем за ваши усилия.

Проверить, если /etc/hosts правильно. Как это:

# hostname mobrglnx1 added to /etc/hosts by anaconda

127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 *****

::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 *******

В месте **** укажите свое имя хоста.

У меня была та же проблема, и я, наконец, обнаружил, что она исходит из двух фактов:

  1. Я использую Mac OS X Mavericks
  2. Я получил доступ к своему проекту через URL http://myproject.local/ потому что я поставил линию 127.0.0.1 myproject.local в /etc/hosts

Проблема возникает из-за того, что .local tld зарезервирован для службы Bonjour, и это начиная с Mac OS X Lion (10.7).

Замена tld на что-то другое устранила проблему.

В твоем httpd.conf обязательно установите настройку HostnameLookups Off.

Если это кому-то поможет, у меня была эта проблема, и она сводилась к тому, что неправильный поиск DNS.

DNS-сервер на сервере был настроен на 127.0.0.1 - Я изменил его на использование публичных DNS-серверов Google, и это сделало его намного быстрее.

В вопросе есть тег apache-2.2, но если кого-то затронула эта гнусная проблема, также на WAMP с Apache 2.4 + PHP 5.5, следующий ответ на SO помог мне:

редактировать httpd.conf и отключите загрузку модуля CGI с помощью комментируя эта строка: LoadModule cgi_module modules/mod_cgi.so

https://stackoverflow.com/a/18786773/260080