Benim sunucularında yazılım yüklemeden benim PHP komut performans / hızını artırmak için neler yapabiliriz?
PHP performans
Hiçbir sihirli çözüm ve iyi sadece zaman kaybı olabilir jenerik çözümler sunmak için çalışırken.
Nerede darboğazları nelerdir? Örneğin sizin komut işlemcisi / veritabanı / bellek yoğun?
Eğer herhangi bir profil performans sergilemişler mi?
Ben performans sorunlarını bakmak bulduğumda yapılacak en iyi şey sayfalarınızı çalıştırmak için almak ve sonra yavaş olanları bakmak ne kadar zaman olduğunu düşünüyorum. Bu gerçek ölçümleri elde halindeyken çoğunlukla büyüklüğe göre, ya bir yavaş SQL sorgusu sabitleme ya da belki Koda biraz sıkarak yavaş olanlar performansını artırabilir.
Bu tabii ki mevcut kodunda herhangi yeni bir donanım veya özel bir yazılım, sadece kritik göz gerektirir.
Gerçekten donanım sınırlarını vurmak için yeterli miktarda trafik Yani, eğer bu sadece ... bu kadar uzun süre çalışacak geldiği, ve / veya sadece doğal olarak yavaş ve gerçekten gerekli olan bazı kod var, bakmak zorunda kalacak diğer olasılıklar.
Profil. Profil. Profil. Orada PHP için her şeyi varsa emin değilim ama kodunuzda profil bilgilerini eklemek için biraz aracı yazmak basit olmalıdır. Sen işlev sürelerini ve SQL sorgu sürelerini profil isteyecektir.
Yani bir fonksiyonu var burada:
function foo($stuff) { ... return ...; }
Bunu değiştirmek istiyoruz:
function foo($stuff) { trace_push_fn('foo'); ... trace_pop_fn('foo'); return ...; }
(Bu, bir fonksiyonu olarak birden fazla döner bir yaralanma haline durumlarda biridir.)
Ve SQL:
function bar($stuff) { trace_push_fn('bar'); $query = ...; trace_push_sql($query); mysql_query($query); trace_pop_sql($query); trace_pop_fn('bar'); return ...; }
Sonunda, program yürütme tam bir izleme üretmek ve darboğazları tespit etmek teknikleri her türlü kullanabilirsiniz.
Büyük bir raporlama sisteminden sorumlu bende ve onIarinki gibi yavaş raporları izler. Raporda başladığında ben db içine benzersiz bir anahtar yangın ve sonra ben ne kadar sürdüğünü belirleyebilir bitince. sayfalar (İsterdim daha çok olur) zaman aşımı zaman bu şekilde ben algılayabilir çünkü veritabanını kullanıyorum
Kolayca raftan çekilebilir biri makul bir tekniktir önbelleklemesidir. zaman, büyük miktarda istekleri arasında (ve hatta müşterileri arasında) ortak olan müşteriler için üreten kaynaklara gitmek eğilimindedir; Bu çalışma zamanı işi ortadan kaldırarak dramatik hız artışlara yol açabilir. Bu web ağacının dışında bir dosyaya üretilen kaynak (veya kaynak parçasını) dökümü ve sonra gerektiğinde onu geri okuyabilirsiniz. Açıkçası, bazı profilleme bu rejenerasyon daha doğrusu daha hızlı olmasını sağlamak için gerekli olacak - zararlı olabilir düzenli diske geri web sunucusu zorlayarak, böylece kaynak gerçekten ağır yeniden kullanımını taşıması da gerekmez.
Ayrıca içeride kötü yazılmış veritabanı sorgularını harcanan ne kadar zaman şaşırabilirsiniz; Zaman yaygın sorguları oluşturulur ve bunlar tekrar yazılabilir olmadığını görmek. zamanın miktarı bazı alt-optimal algoritmaları kullanarak sürece gerçek PHP kodu, genellikle oldukça sınırlıdır yürütme geçirdi.
PHP bazı "magicy" yaklaşımlar / fonksiyonlar bu endişeleri düşünmekten birini aşırı koruyabilir ama bunların hiçbiri, PHP ile sınırlıdır. Örneğin, son zamanlarda sıralanmış bir dizisi üzerinde ikili arama kullanmak array_search kullanıyordum bir senaryo güncellenen ve beklenen üstel hızlanma kazandı.
profilleme ve iyi kaynak tahsisi kararları, örneğin önbelleğe alma gibi ilk başka tavsiye bazılarını izleyin.
Ayrıca hesabınıza veritabanı gibi dış kaynakların performansını alır. MySQL size kontrol edebilirsiniz yavaş sorgu günlüğünü örneğin. Ayrıca size veritabanı tasarımı bir konuda ihmal etmedi emin olun. (Sorgularınızı optimize tekrar MySQL için gerçek verilere karşı) büyük bir ödeme yapabilirsiniz.
olanlar Aklıma ...
Döngü değişmezleri hep izlemek için iyi bir biridir.
Hataları giriş yaptığını, özellikle E_STRICT ve E_NOTICE uyumlu kod yazın.
@ Operatörü kaçının.
Mutlak yollar gerektirir ve içerir.
Mümkün yerine düzenli ifadeler str_replace vb strpos kullanın.
Sonra çalışır, ancak muhtemelen alışkanlık size çok fayda verebilir diğer yöntemlerle bir grup var.
Gerçekten XDebug Profilcinin kullanmayı düşünün: belli bir işlevi umuyordum karşı yürütülmektedir ne kadar kontrol yardımcı olur.
Ben, uygun dizi-aramalarını mantığını değiştirerek kod okunabilirliği geliştirirken talimatları indirilmeye çalışılmaktadır. Bu Jeff Atwood [En İyi Kod At All No Kod dir] yazdığı şeyler var [1].
- Ayrıca, başka bir döngü içine döngüler önlemek ve / else if deyimlerinin iç içe.
- Kısa fonksiyonlar. Bazen kod bir sürü sonuç değeri zaten bilinen çalıştırılacak gerekmez.
Gereksiz testler:
(Sayım ($ dizi) === 0) dönüş ise;
olarak da yazılabilir:
if (! $ dizi) return;
Başka işlev çağrı ortadan!
[1]: http://www.codinghorror.com/blog/archives/000878.html "İyi Kod At All No Kod olduğu"
dosyaları da dahil olmak yavaştır ve bunları gerektiren bile yavaş olduğunu. Her sınıf da dahil olmak üzere __autoload kullanırsanız o kadar ekleyecektir. Örneğin.
Hep kod clairty feda eğer, kod optimizasyonu açısından çok zeki olmaya çalışmakla biraz dikkatli. Eğer yapmanız gerekiyorsa belirsiz kod hardwear yükseltmek yerine kod çimdik çalışarak vaktini israf daha ucuz olmaz, hızlı yapmak için? İşlemci çevrimleri de olsa programcı döngüleri daha ucuzdur.
Rasmus Lerdorf yaptığı son sunumunda "bazı iyi ipuçları verdi Basit Sabit olan FrOSCon '08 at". Eğer bir baytkodu önbellek kullanıyor (ve gerçekten birini kullanarak olmalıdır) ise, yol özlüyor çok zarar dahil, bu yüzden / gerektiren require_onceye Şu Verilerinizi optimize.
Sen tarafından optimize edebilirsiniz kodun hangi parçası görüntülemek için xhprof gibi profilleme aracı kullanabilirsiniz!
İki temel şeylerle kod optimize edebilirsiniz:
PHP ilişkili kütüphane ve sunucuyu optimize
Sen optimize edebilir ederek kodun hangi parçası görüntülemek için xhprof gibi profilleme aracı kullanmak ve burada takip etmek link edebilirsiniz: http://michaelsanford.com/compiling-xhprof-for-php-5-4/
Kod profilcisini ve kod analizörü kullanarak kodunuzu optimize
Bu eklenti kullanmak için NetBeans yüklemeniz gerekir. Burada dikkat edilmesi gereken adımlar şunlardır:
1) Açık NetBeans sonra menü çubuğu Araçlar> Plugin seçeneğini seçin. Sonra mevcut eklenti sekmede eklenti ismi "phpcsmd" arama ve oradan yükleyin.
2) Şimdi terminal açın ve komut "sudo su" yazarak süper kullanıcı olarak orada olacağım.
o yüklü değilse 3) terminale aşağıdaki komutları çalıştırarak sisteme) (ARMUT kütüphanesini kurun
a) wget http://pear.php.net/go-pear.phar b) php go-pear.phar
Size daha fazla addons kurulumu için buna ihtiyacım gibi.
4) Daha sonra komutunu çalıştırın
"pear config-set auto_discover 1"
Bu oto gerekli eklentileri yolunu "true" keşfetmek ayarlamak için kullanılacaktır. Böylece otomatik olarak istenilen konuma yükleyin olsun.
5) Ardından PHP kodu sniffer yüklemek için komuta altında çalıştırın.
"pear install --alldeps pear/PHP_CodeSniffer"
6) Şimdi aşağıdaki komutu çalıştırarak PHP Mess Detector'ü yüklemeye
"pear install --alldeps phpmd/PHP_PMD"
Bu modülün yüklerken "geçersiz paket adı / paket dosyası 'phpmd / PHP_PMD'" gibi hata alırsanız. Bu hata kurtulmak için bu "armut kanal keşfetmek pear.phpmd.org" komutunu kullanmak gerekir. Bu komutun sonra Mess dedektör yüklemeye tekrar yukarıdaki komutu çalıştırabilirsiniz.
7) Şimdi aşağıdaki komutu çalıştırarak PHP Bağlı yüklemeye
"pear install --alldeps pdepend/PHP_Depend"
8) Şimdi aşağıdaki komutu çalıştırarak PHP Kopyala Yapıştır Dedektörü yüklemek
"pear install --alldeps phpunit/phpcpd"
9) Daha sonra komutunu çalıştırın
"pear config-set auto_discover 0"
Bu oto yolu "yanlış" keşfetmek ayarlamak için kullanılacaktır.
10) Daha sonra, net fasulye açmak ve yol Araçlar> Seçenekler> PHP> PHPCSMD izleyin
1) PHP en son sürümünü kullanın
çekirdek takımı her sürümde PHP performansını iyileştirmeye çalışıyor.
2) Bayt kodu cache
PHP 5.5 yana Bayt kodu önbellek adında PHP eklenmiştir
OPcache. Kullanılması
OPcacheHer PHP sürümünde iyileştirmeler alır ve hatta alabilirsiniz özellikle PHP 7. beri büyük bir fark yaratabilir gelecekte JIT uygulaması .
3) profil
profil gelişmekte size tam olarak ne olup bittiğini büyük bir fikir verir iken. Bu kod darboğazları bulmakta çok yardımcı olur.
En çok kullanılan araçlardan biri olduğunu
XHProfancak resmi olarak artık desteklenmiyor ve profilini istediğinizde PHP> = 7. Alternatif ile sorunları vardır PHP> = 7 olduğu
Tidewaysbir çatal olan
XHProf .