Step 1: Make sure it's the application, and not the web server
Kek hiyerarşi dışında, basit bir merhaba dünya dosyası oluşturun
<?php
echo 'Hello World';
Ve bu çalıştırmak için ne kadar uzun sürdüğünü görüyoruz. Bazen sunucu / ağ düzeyinde oluyor şey için uygulamayı suçlamak kolaydır.
Iki adıma geçmek, test.php
zaman makul miktarda işler varsayarsak.
Step 2: Back Everything Up
Üretim kodu ile işe yaramaz, her zaman tehlikeli bir oyundur. Eğer tamir edilemeyecek bozuk bir şey durumunda bir tam veritabanı yedekleme yapmak ve bütün pasta dizin ağacını kopyalamak başlamadan önce. Eğer (bir GUI aracı veya komut satırını kullanarak) üretim dizin ve kopya içeriğini diff, günün bitti zaman
diff -r production-cake copy-of-cake
Step 3: The Database is Almost Always your First Bottleneck With the LAMP Stack
PHP uygulamalarında insanlar gerçek SQL sorgulama çok gizler bir ActiveRecord tarzı modelini kullanıyorsanız, özellikle SQL sorguları bir sürü oluşturur. Sen bir dosyaya ve / veya veritabanı tablo sorguları oturum Cake kurmak isteyeceksiniz. Ben yerine veritabanı düz bir dosya ve / veya syslog çıkıyor tavsiye ederim, ancak bunu yaparken bazı talimatlar here, var. Veritabanına DB istekleri açılıyor sayfa yük başına sorgu sayısını iki katına çıkacak.
Sadece IP adresinden gelen istekleri kaydeder bu yüzden ben de bir IP kontrol ekleyerek tavsiye ederim. Bu şekilde önemli ölçüde da günlük uygulamanın normal çalışma ile karışmaz.
Bu yerde bir kez, tek bir istek yapmak ve daha sonra oluşturulan ediliyor SQL bakmak. Bir performans artışı elde etmek için bazı önbelleğe alma bırakabileceğiniz bir yer olarak ve tekrar tekrar tekrarlanan aynı sorguları arayın. Ayrıca sıralı sorguları için bakmak
select * from foo where id = 5
select * from foo where id = 6
etc...
Hangi birisi perde arkasında neler olup bittiğini anlamadan bir döngü içinde modellerini yüklüyor gösterir.
Step 4: If its not the Database, it's System Calls
Veritabanı yoru darboğaz değildir ve PHP / Apache düzgün ise, bakmak için sonraki şey system calls. Bombardımanı halletmek için hızlı ve kirli bir yol, ama onun bir derece pahalı bir işlemdir. Birini veya bir döngü içinde bu iki almak ve sizin için bitti.
Run top
veya ps
üretim sunucusuna başlangıç ve durdurma programlar için bakmak, daha sonra bu komutları için kod tabanında arama.
Step 4: Copy Every Controller
Sen denetleyicileri bir dizi var gidiyoruz
/app/controllers/posts_controller.php
/app/controllers/other_controller.php
etc...
URL'ler karşılık hangi
http://www.example.com/posts/methodName
http://www.example.com/other/methodName
etc...
Eğer denetleyici bir kopyasını yapmak, why o kadar yavaş anlamaya belirli bir isteği hata ayıklama için ihtiyaç duyarsan.
/app/controllers/debugposts_controller.php
ve elle talepte
http://www.example.com/debugposts/methodName
Eğer denetleyici dosyasının içine istediğiniz kadar sonra birçok hata ayıklama / yazdırma ifadeleri atabilir. Eğer "şanslı" iseniz, orijinal geliştiriciler muhtemelen denetleyici dosyaları mantık bir çok sıkışmış. Bu durum ise, "yarım kod dışında bir açıklama" oyunu oynamak için bir konumda artık sensin.