Я работаю над крошечным проектом 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 *******
В месте ****
укажите свое имя хоста.
У меня была та же проблема, и я, наконец, обнаружил, что она исходит из двух фактов:
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