Je travaille sur un tout petit petit projet PHP pour un de mes amis, et j'ai une configuration d'environnement WAMP pour le développement local. Je me souviens des jours où la réponse de mon Apache 2.2 local était immédiate. Hélas, maintenant que je reviens de longues vacances, je trouve les réponses de localhost
douloureusement lentes.
Il faut environ 5 secondes pour qu'une page HTML 300B soit diffusée.
Quand je regarde le gestionnaire de tâches, les processus httpd
(2) utilisent jusqu'à 0% du CPU et globalement mon ordinateur n'est pas sous charge (0-2% d'utilisation du CPU).
Pourquoi la latence est-elle si élevée? Y a-t-il un paramètre Apache que je pourrais modifier pour peut-être faire fonctionner son thread avec une priorité plus élevée ou quelque chose? Il semble qu'il dorme simplement avant de répondre.
Le problème était lié au fichier de paramètres principaux d'Apache httpd.conf
.
J'ai trouvé ça:
Il existe trois façons de configurer PHP pour fonctionner avec Apache 2.x sous Windows. Vous pouvez exécuter PHP en tant que gestionnaire, en tant que CGI, ou sous FastCGI.[Source]
Et donc je suis allé dans les paramètres d'Apache et j'ai vu où était le problème: je l'ai fait configurer en CGI, au lieu de le charger en tant que module. Cela a causé php-cgi.exe
pour démarrer et arrêter chaque fois que je fais une demande. Cela ralentissait mon localhost
développement.
J'ai changé les paramètres pour charger PHP comme un module Apache [~ # ~] [~ # ~] et maintenant tout fonctionne parfaitement. :)
Pour charger le module PHP pour Apache 2.x:
1) insérez les lignes suivantes dans
httpd.conf
LoadModule php5_module "c:/php/php5Apache2.dll"
AddHandler application/x-httpd-php .php
(p.s. changer
C:/php
sur votre chemin. Modifiez également php5Apache **. Dll en votre nom de fichier existant)2) Pour limiter PHP exécution uniquement pour les fichiers .php, ajoutez ceci dans
httpd.conf
:
<FilesMatch \.php$> SetHandler application/x-httpd-php </FilesMatch>
3) définir le chemin de php.ini dans
httpd.conf
(si après le redémarrage vous obtenez une erreur, supprimez à nouveau cette ligne)
PHPIniDir "C:/php"
Merci à tous pour vos efforts.
Pour moi, définir la propriété ServerName
dans httpd.conf
correction des retards (ils étaient au maximum de 10 secondes):
# 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
J'ai eu le même problème.
La définition de la redirection localhost sur 127.0.0.1 dans le fichier hosts n'a pas aidé. L'optimisation du serveur MySQL n'a pas aidé (InnoDB -> MyISAM, modifiant de nombreuses directives liées au cache dans my.ini).
J'ai ensuite utilisé web webgrind et réduit le problème à l'appel "new PDO (...)". En changeant
mysql:Host=localhost;dbname=dp-ui;charset=utf8
à
mysql:Host=127.0.0.1;dbname=dp-ui;charset=utf8
en dsn pour PDO complètement résolu le problème! Temps de chargement de la page passé de plus de 3000 ms à 16 ms.
Cependant, je ne comprends vraiment pas pourquoi la ligne "127.0.0.1 localhost" dans le fichier hosts n'a pas aidé.
Vérifier si /etc/hosts
est correct. Comme ça:
# 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 *******
Dans la place ****
donnez votre nom d'hôte.
J'ai eu le même problème et j'ai finalement découvert qu'il provenait de deux faits:
http://myproject.local/
parce que je mets une ligne 127.0.0.1 myproject.local
dans /etc/hosts
Le problème apparaît car le .local
tld est réservé au service Bonjour, et ce depuis Mac OS X Lion (10.7).
Changer le tld pour autre chose a résolu le problème.
Dans ton httpd.conf
assurez-vous de définir le paramètre HostnameLookups Off
.
Au cas où cela aiderait quelqu'un, j'ai eu ce problème et cela se résumait à recherche DNS incorrecte.
Le serveur DNS sur le serveur a été défini sur 127.0.0.1
- Je l'ai changé pour utiliser les serveurs DNS publics de Google, et cela a fait un tas plus rapide.
La question a une balise Apache-2.2, mais si quelqu'un est affecté par ce problème néfaste également sur WAMP avec Apache 2.4 + PHP 5.5 , la réponse suivante sur SO a fait l'affaire pour moi:
éditer
httpd.conf
et désactiver le chargement du module CGI en commentant cette ligne:LoadModule cgi_module modules/mod_cgi.so