Bir arkadaşım için küçük bir PHP proje üzerinde çalışıyorum ve yerel kalkınma için bir WAMP ortam kurulum var.Yerel Apache 2.2 yanıt hemen olduğu günleri hatırlıyorum. Ne yazık ki, şimdi uzun, uzun bir tatilden döndüm, localhost
'dan gelen yanıtları acı verici şekilde yavaş buluyorum.
300B HTML sayfasının yayınlanması yaklaşık 5 saniye sürer.
Görev yöneticisine baktığımda, httpd
işlemleri (2) CPU'nun% 0'ını kullanıyor ve genel olarak bilgisayarım yük altında değil (% 0-2 CPU kullanımı).
Gecikme neden bu kadar yüksek? İş parçacığını belki daha yüksek bir önceliğe veya başka bir şeye çalıştırmak için Tweak yapabileceğim herhangi bir Apache ayarı var mı? Yanıtı sunmadan önce sadece uyuyor gibi görünüyor.
Sorun Apache'nin ana ayarlar dosyası httpd.conf
.
Bunu buldum:
Windows'ta Apache 2.x ile çalışmak için PHP kurmanın üç yolu vardır. PHP bir işleyici olarak, CGI veya FastCGI altında.[Kaynak]
Ve böylece Apache'nin ayarlarına gittim ve sorunun nerede olduğunu gördüm: Bir modül olarak yüklemek yerine CGI olarak ayarladım. Bu sebep oldu php-cgi.exe
Her istek yaptığımda açılıp kapanıyor. Bu localhost
gelişimimi yavaşlatıyordu.
Ayarları PHP bir Apache [~ # ~] modülü [~ # ~] ve şimdi yüklemek için değiştirdim. her şey mükemmel çalışıyor. :)
PHP modülünü yüklemek için:
1)
httpd.conf
LoadModule php5_module "c:/php/php5Apache2.dll"
AddHandler application/x-httpd-php .php
(ps.s. değiştir
C:/php
yolunuza. Ayrıca, php5Apache **. Dll dosyasını mevcut dosya adınızla değiştirin)2) PHP sadece .php dosyaları için yürütmeyi sınırlamak için bunu
httpd.conf
:
<FilesMatch \.php$> SetHandler application/x-httpd-php </FilesMatch>
3) php.ini'nin yolunu
httpd.conf
(yeniden başlattıktan sonra hata alırsanız, bu satırı tekrar kaldırın)
PHPIniDir "C:/php"
Çabalarınız için hepinize teşekkür ederim.
Benim için ServerName
özelliğini httpd.conf
gecikmeleri düzeltti (en kötü ihtimalle 10 saniyeye kadar çıktılar):
# 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
Ben de aynı problemi yaşadım.
Hosts dosyasında localhost yönlendirmesini 127.0.0.1 olarak ayarlamak yardımcı olmadı. MySQL sunucusunun optimizasyonu işe yaramadı (InnoDB -> MyISAM, my.ini dosyasındaki önbellekle ilgili birçok yönergeyi değiştirerek).
Sonra web webgrind kullandım ve "yeni PDO (...)" çağrısı için sorunu daralttı. Değiştirme
mysql:Host=localhost;dbname=dp-ui;charset=utf8
için
mysql:Host=127.0.0.1;dbname=dp-ui;charset=utf8
pDO için dsn içinde tamamen sorunu çözdü! Sayfa yükleme süresi 00 ms'den 16ms'ye çıktı.
Ancak ben gerçekten neden "127.0.0.1 localhost" satırının ana bilgisayar dosyasında yardımcı olmadı kafam karıştı.
Kontrol eğer /etc/hosts
doğru. Bunun gibi:
# 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 *******
Yerinde ****
ana bilgisayar adınızı belirtin.
Aynı sorunu yaşadım ve sonunda bunun iki gerçekten geldiğini keşfettim:
http://myproject.local/
çünkü bir çizgi koydum 127.0.0.1 myproject.local
içinde /etc/hosts
Sorun, .local
tld Bonjour servisi için ayrılmıştır ve bu Mac OS X Lion'dan (10.7) beri.
Tld'yi başka bir şey için değiştirmek sorunu çözdü.
httpd.conf
ayarını yaptığınızdan emin olun HostnameLookups Off
.
Herkes yardımcı olur, ben bu sorunu vardı ve yanlış DNS arama olmak için kaynatıldı.
Sunucudaki DNS Sunucusu 127.0.0.1
- Google Herkese Açık DNS sunucularını kullanmak için değiştirdim ve bu da onu daha hızlı bir yığın haline getirdi.
Sorunun etiketi Apache-2.2'dir, ancak birisi bu hain sorundan etkilenirse Apache 2.4 ile WAMP + PHP 5.5 , SO) için aşağıdaki cevap benim için hile yaptı:
düzenle
httpd.conf
ve CGI modülünün yüklenmesini bu satıra yorum yaparak devre dışı bırakın:LoadModule cgi_module modules/mod_cgi.so