Hangi PHP daha iyi performans?

7 Cevap php

Ben genelde 1 fonksiyonları sitemde Hader dosyası içine dahil, şimdi bu site oldukça yüksek trafik ve ben sadece bu yüzden burada soru şu, her küçük şeyi elimden en iyi yapmak ister

O sayfa için ihtiyaç duyulan ya da gerçekten bu, sadece 1 büyük dosya olarak, benim şimdiki fonksiyonlar dosya benim bütün site için tüm fonksiyonları vardır tüm yüklemek için hiçbir fark yok sadece kod ile birden fazla küçük fonksiyon tipi dosyaları dahil etmek daha iyidir yaklaşık 4.000 hatları uzun ve tek tek her sayfası yükleme Şablonlar üzerine yüklenir, bu kötü mü?

7 Cevap

Söylemesi zor. 4.000 hatları dosya ayrıştırma alemlerde bu büyük değil. Kod yönetimi açısından, bu hantal tarafta almaya başlıyor, ama 2, 5 veya 10 dosya içine kesiliyor, ve sayfaları ihtiyaç duydukları sadece birkaçı şunlardır alarak ölçülebilir bir performans farkının çok görmek olası değil (daha iyi kodlama uygulamadır, ama o ayrı bir mesele). Dizi-of-satırları sizin diferansiyel sayısının-of-dosyalarının ayrıştırıcı açmak gerekiyor vs okumak önemli bir şey gerektirecek kadar büyük görünmüyor. Benim ilk tepkim bu muhtemelen hakkında endişelenmenize gerek bir sorun olmasıdır.

Madalyonun ters tarafında, bazı operasyonları genellikle dosyaları yüzlerce genişletilmiş bir include() ağacı vardı kurumsal düzeyde bir proje üzerinde çalıştı. Bu işlemleri profilleme include() tarafından alınan zaman yalnız (bu PHP4 idi) bir 10 saniyelik yükleme işleminin 2-3 saniye kadar yapılan aramalarda belirtti.

If you can install extensions on your server, you should take a look at APC (see also).
It is free, by the way ;-) ; but you must be admin of your server to install it ; so it's generally not provided on shared hosting...

Bu bir "opcode önbellek" denen şeydir.

Bir PHP komut dosyası çağrıldığında Temelde, iki şey olur:

  • komut opcodes içine "derlenmiş" olduğunu
  • opcodes yürütülür

APC RAM'de opcodes tutar; böylece dosya denir, her zaman yeniden derlenmiş olması gerekmez - ve CPU yük ve performansları hem de harika bir şey.


To answer the question a bit more :

  • 4.000 hatları performansları konuşan, o kadar değil; Herhangi bir büyük uygulama / Çerçeve dosyaların bir çift açın ve hızla birkaç satır bin alırsınız
  • dikkate almak bir really important şey maintenability: ne sizin ve takım için birlikte çalışmak daha kolay olacak?
  • ; birçok küçük dosya yükleme yavaş birçok sistem çağrıları, ima ancak bu muhtemelen işletim sistemi tarafından önbelleğe alınmış ... Yani muhtemelen that alakalı olmaz
  • Hatta 1 veritabanı sorgu yapıyorsanız, bu bir (including network round-trip between PHP server and DB server) muhtemelen birkaç bin satır ayrıştırma daha fazla zaman alacaktır ;-)

Ben fonksiyonları her sayfa için uygun olan bileşenlerden içine dosya bölünmüş olabilir eğer daha iyi olacağını düşünüyorum; ve uygun sayfalarında bu bileşenler için diyoruz. Sadece benim 2 sent!

p / s: Ben bir PHP amatör ve ben bir PHP site yapma ellerimi çalışıyorum; Ben herhangi fonksiyonlarını kullanarak değilim. Yani bir site için ne gerekir fonksiyonlar beni aydınlatmak?

Benim durumumda büyük bir yerde dahil olur dosyasını dahil olan aslında performansını öldürebilir. Hepimizin oyun kuralları dinamik olarak (diğerleri) PHP oluşturulan ve dosya yaklaşık 500 Kib de tartılır vardı bir tarayıcı oyunu üzerinde çalıştı. Kesinlikle performansını etkiledi ve biz bunun yerine bir PHP uzantısı üreten düşündü.

Ancak, her zamanki gibi, ben bunu bir performans sorunu olduğu kadar şimdi ne yaptığınızı yapmak ve sonra gerektiği şekilde optimize etmeniz gerektiğini söyleyebilirim.

Eğer bir 4000 satır dosya yüklemek ve 10 satır belki 1 fonksiyonunu kullanırsanız, o zaman evet ben verimsiz olduğunu söyleyebilirim. Bir kombine 1000 satır fonksiyonları çok kullanılan olsa bile, yine de verimsiz.

Benim önerim birlikte grup ile ilgili fonksiyonlar olmak ve ayrı dosyalarda saklayabilirsiniz olacaktır. Bir sayfa sadece fırsatlar eğer Bu şekilde, örneğin, veritabanı fonksiyonları sadece veritabanı fonksiyonları dosya / kütüphane yükleyebilirsiniz.

Fonksiyonları bölme için Anothe nedeni idame olduğunu. Bir işlevini değiştirmek gerekiyorsa, dosyayı içerme monalithic onu bulmalıyız. Sen de çok, çok benzer ama bile farkında değilsiniz işlevleri olabilir. Yaptıklarını tarafından sıralama işlevleri bunları karşılaştırmak ve ihtiyacınız veya bir daha genel amaç fonksiyonunun içine iki işlev birleştirme yok şeylerden kurtulmak sağlar.

Zaman Disk IO Çoğu sana diskten alıp daha az dosyalar daha iyi düşünüyorum, bu yüzden sunucu öldürecek budur. Bu APC yüklemek mümkün olup olmadığını Ayrıca o dosya büyük bir kazançtır belleğe derlenmiş saklanacaktır.

Genellikle bu sadece gerçekten kullandığınız dosyaları yüklemek gerekir, çünkü aşağı küçük dosyalar haline şeyler kırmak için, dosya yönetimi bilge, daha iyidir. Ama, 4.000 hatları, muhtemelen bir fark çok fazla yapmaz.

Ben buna benzer bir çözüm öneririm

function inc_lib($name)
{
    include("/path/to/lib".$name.".lib.php");
}

function inc_class($name)
{
    include("/path/to/lib".$name.".class.php");
}