SORU
9 EKİM 2008, PERŞEMBE


Neden require_once kullanımı çok mu kötü?

Okuduğum her şey daha iyi PHP kodlama uygulamaları hakkında hız nedeniyle require_once kullanmayın diyor.

Neden bu?

require_once olarak aynı şeyi yapmak için uygun/daha iyi bir yolu nedir? Eğer önemliyse, PHP5 kullanıyorum.

CEVAP
12 EKİM 2008, Pazar


Bu konu zaten "çözüm" ve bu, tüm niyet ve amaçlar için, yanlış. yayınlanan bir oldu çünkü bana yalakalık yapar, Hadi numaralandırma:

  1. Tanımlargerçektenpahalı PHP. 8* *veya test kendiniz yapabilirsiniz, ama PHP bir genel sabit tanımlamanın tek etkili yolu bir uzantısı). (Sınıf sabitleri aslında oldukça iyi performans bilge, ama bu tartışmalı bir nokta, çünkü 2)

  2. Eğer uygun require_once(), yani sınıfların eklenmesi için kullanıyorsanız, hatta class_exists('Classname') Eğer bir tanımlamak gerekir; sadece kontrol etmiyorsunuz. Eğer dosyayı sen de dahil olmak üzere içerir kod, yani kullanıyorsun bu prosedür moda, orada kesinlikle hiçbir neden o require_once() olması gereken için; her zaman vardır dosyayı tahmin yapmayı bir yordam çağrısı.

Bir süre için, bir sürü insan onların kusurları için class_exists() yöntemi kullandınız. Çirkin, ama iyi bir nedeni vardı, çünkü onu sevmiyorum: require_once() PHP daha yeni sürümleri biraz önce oldukça verimsiz oldu. Ama o tamir ediyor, ve koşullu derleme gerekecek ekstra bayt, ve ekstra yöntem çağrısı, şu ana kadar herhangi bir iç karma tablosu kontrol overweigh ki diyeceksiniz.

Bu olayı zor test etmek için, yürütme zamanı çok az sorumludur çünkü. şimdi, bir giriş:

Burada soru şu olmalıdır düşünüyorum: içerir, genel bir kural olarak, pahalı PHP, çünkü her zaman tercüman vurur bir geçiş geri ayrıştırmak modu oluşturabilir ve bu işlem kodları, ve sonra geri çekil. Eğer bir 100 içerir varsa, bu kesinlikle performansını etkileyecektir. Kullanarak veya require_once kullanarak değil çok önemli bir konu, neden işlem kodu önbelleğe için hayat zor yapar çünkü. explanation for this burada bulabilirsiniz, ama bu aşağı kaynar ne olduğunu:

  • Eğer sırasında ayrıştırma zaman, biliyor musun tam olarak ne dosyaları vardır ihtiyacınız olacak tüm yaşam isteği, require() bunlar çok başında ve işlem kodu önbelleğe işlemek her şey için.

  • Eğer işlem kodu bir önbellek kullanıyorsanız, sabit bir yerdesiniz. Satır içi uygulaması tüm içeren bir dosya (bunu yapma sırasında gelişme, yalnızca üretim) kesinlikle yardımcı ayrıştırmak, ama bir ağrı yok, ve ayrıca, bilmen gereken tam olarak ne olacaksın dahil sırasında isteği.

  • Otomatik yüklenmesini çok uygun, ama yavaş, otomatik yüklenmesini mantığı vardır her zaman çalıştırmak için bir neden yapılır. Pratikte, bir istek için bazı özel dosyaları özdevinimli bir sorun çok neden buldum, ama ihtiyacınız olacak tüm dosyalar özdevinimli olmamalı.

  • Belki 10 içerir (Bu bir . varsa ^em>çokzarf hesaplama) geri, tüm bu mastürbasyon değmez: optimize veritabanı sorgularını falan.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Lena Danya

    Lena Danya

    11 NİSAN 2010
  • Theodore Leaf

    Theodore Lea

    29 AĞUSTOS 2006
  • WOSU Public Media

    WOSU Public

    23 AĞUSTOS 2007