O dosya tabanlı Sessions gibi PHP dosyaların bir sürü eklemek kötü mü?

7 Cevap php

Dosya tabanlı PHP oturumları performans için büyük değil nasıl hakkında okuduktan sonra, beni düşünme vardır. Bu dosyaların bir sürü içeren bir PHP komut dosyası da kötü olduğu anlamına mı geliyor? Bir dosya dahil edilir veya bu oturum veri dosyaları alınır yolu farklıdır? Yana

7 Cevap

Sen spl_autoload_register () ve OOP kullanmalısınız. Bu şekilde, ne kadar küçük proje şu anda ya da ne kadar büyük zaman (ve bu olasılığını dışlamak için aptal olurdu) üzerinde gelişecek, PHP sadece az, ne fazla ihtiyacı içerecektir.

Bu zamanı RAM kullanımı, kod sürdürülebilirlik ve sabit disk gecikme süresinin etkileri arasındaki mükemmel future-oriented denge, ben tabii, düzgün kodunuzu modularizing konum sağladı, diyebilirim (ve {[ (1)]}) burada olur.

Bunu söyledikten sonra, bu kullanılmayan dosyaları da dahil olmak üzere kötülüğü ima eder.

Dosyaların İçerme olursa olsun, yolu (spl_autoload_register () veya başka türlü), nedeniyle göreli yolları kullanarak PHP dosyaları için arama olurdu php.ini yönergesi include_path, için, mutlak yolları ile yapılmalıdır.

Ve neden "'foo.php' include" için küçük bir ekstra not (dosyaları dahil "normal" bir şekilde) "'. / Foo.php' include" gibi çalışır: "." Dizin çünkü bu Varsayılan include_path parçasıdır.

PHP ile kemanlar herkes kendi kütüphaneleri büyük hale noktaya gelir düşünüyorum, ve endişeler performansı için geldi.

Benim deneyim her zaman tüm kütüphaneler yüklemek eğer evet, o zaman bu değerli bellek (Eğer süreç başına megabayt sadece bir sabit numara tahsis edildiği Of) yiyip gidiyor olmasıdır. Ben komut dosyası örneği başına 2-3 MB yedik (yorumlarla) 300-400KB ağırlığında kaynak kod dosyaları vardı. Bir komut dosyası çok paylaşılan ana sadece 16-32 MB aldığını görünce, bir lot olduğunu. Ayrıca, bu tür büyük dosyaları işleme genellikle yol çok fazla istek başına yarım saniye, kadar da geliyor.

Yani, bölme yukarı Autoload ve eşlerinden ile yapmak kesinlikle gerekli ve kolaydır. this question for a few suggestions on how to split up your code wisely. There is also a link to a question about how to organize a large PHP project , mükemmel sonuçlar vermiştir ki benim cevap göz atın. Ben mükemmel bir yapı sergiyi sürecinde kendimi yaşıyorum ve henüz bitmiş değil. :)

Chacha102 yazdı, gerçekten bu kadar kötü değil.

Ama aynı zamanda gerçek komut dosyaları bağlıdır.

Pratikte size kod profil gerekir, Xdebug Bu harika.

Netleştirmek için: profil ve karşılaştırın. Küçük komut dosyaları eğer yapabilirsen çok kaçının, ama yine de (satırları binlerce tek bir komut dosyası düzenlemek için rahat değil) kaynak kodu organize tutmak. Bir profiler iyi bir denge bulmak için bazı sayılar vereceğim.

Gerçekten o kadar kötü değil. Bu kimse bütün PHP uygulama tek bir komut yapmak için bir derleyici oluşturmak için çalıştı gerçeği ile gösterilebilir ..

Aslında o aldı ne kadar zamanı ölçmek için PHP microtime fonksiyonunu kullandıysanız, bir saniyenin milyarda olacaktır.

Küçük bir sürü dosya içeren büyük bir dosya dahil olmak üzere daha az performanslısı APC gibi önbellek motorları var, neden bu.

Başka bir seçenek "tembel" kullanılmayan bir bütün yük (tür) olmayacak içerir böylece (örnek bir sınıf başlatmasını) onları kullanmadan önce Require_once dosyaları, örneğin, eklemektir.

Ben bu konuda bir Zend özelliği (autoload kayıt) kullandım ama php ya da değilse jenerik ama diğer çerçeveler varsa ben bilmiyorum ...

Şahsen ben her zaman sayfaları oldukça içeren kaynak dosya boyutu ve miktarına göre işlem verileri ile daha fazla sorun yaşadım. Ancak, (cut-n-yapıştır programlama tersi olarak düşünüyorum) soyutlama katmanları ağır Parametrelenmiş kod yazmak çok farklı bir sürü iş sadece yarım düzine basit parametrelerini değiştirerek aynı kodu ile yapılır.