PHP IF Bildirimi Değerlendirme &

4 Cevap php

Ben sunucu üzerinde etkisi nedir merak ediyorum ifadelerinin değerlendirildiği takdirde PHP, yani bellek tüketimi ve CPU kullanımı ve trafik büyüdükçe bu büyük bir sorun haline gelebilir eğer?

Örneğin, bir WordPress blog her sonrası özeti için tema ifadeler IF PHP bir çok kullanırsanız, bu ana sayfa yüksek trafik başladığında eğer bir hayli fazla sunucu kaynaklarını gerektiren gidiyor? Bu bir sorun haline gelebilir gibi ve birçok ileti (yani kategori sayfaları) listelenen sayfalarda, öyle görünüyor.

Ben bu olayı bu trafik ani kesinlikle gerekli değildir IF ifadeleri kısmak için iyi bir fikir olabilir düşünüyorum. Ya da, bu ben endişesi bile bir şeydir?

4 Cevap

Zaman if deyimi 1000'ler değerlendiren geçirdi tamamen tek bir veritabanı sorgu tarafından boğulmuş olacaktır.

Sen gerekir:

  1. Profile sizin darboğazların nerede olduğunu öğrenmek için
  2. Focus - Bir fonksiyonu% 10 daha hızlı% 90 daha hızlı bir ufacık işlev yapma daha fazla etkiye sahip olacak hale ardından toplam sürenin% 50 alırsa.

Edit:

Database queries are slow (even a quick one) - you should aim to make as few queries as possible, within reason. Within a query, I don't think there's a speed difference between checking for NULL or a specific value - if there is it will be a minuscule difference.

Tüm, endişelenecek bir şey yok.

Ben bu konuda endişelenmenize gerek yok bir şey olduğunu düşünüyorum: uygulama veritabanı bir ya da iki sorgu yaparsa, bu "eğer" bir çift (bir çift daha fazla) daha fazla zaman alacak.

Bu "mikro-optimizasyon" tür: Bir trafik başak durumunda büyük optimizasyonlar arıyorsanız, ilk olarak araştırılması gereken başka yollar vardır ;-)

For some (quite longer) explanations / ideas, you can take a look at this answer I gave yesterday to another question.
(I really don't feel like rewriting any of that before at least a couple of days have passed ^^ )

Temelde, ne gerçekten yardımcı olabilir:

  • Bir opcode önbellek kullanma gibi APC
  • Önbelleğe alma özelliğini kullanma: Eğer önbellek daha fazla veri, daha az hesaplamalar / DB yapmak zorunda sorgular - ve bu genellikle zaman en önemli miktarda almak biridir
  • Xdebug kullanarak ve bu uygulama zaman alır ne olduğunu tespit etmek, yeteneklerini profil bulunuyor
  • Doğru indeksleri kullanılarak, SQL sorguları optimize
  • Eğer uzağa gitmek istiyorsanız, bir ters-vekil önbellek bir seviye olarak hareket etmek kullanabilirsiniz; Örneğin, varnish.

Ben bunun bir IF deyimi Assembler'de temel düzeyde JNZ anımsatıcı aşağı gelir çünkü bu kadar .... farketmez neden daha mantıklı sebep gerekir düşünüyorum. Bu 1 "kelime" value anlamı "EĞER SIFIR ATLAMA" bulunuyor. Gerçek ağır yük karşılaştırarak ve conditionals değil, IF deyimi kendisinden değerlendirerek gelecek.