Dosya boyutu ve: PHP () mevcuttur

3 Cevap php

Deneyimsiz bir PHP bir soru:

Ben yerlerde bir sürü kez farklı sayfalarında çok eklemeniz gereken bir PHP komut dosyası var.

Ben aşağı birkaç küçük dosya içine dahil dosya kırma ya seçeneği var ve bir olarak, gerektiğinde bu şunlardır ... YA ... Ben sadece tek bir PHP dosyası hep birlikte tutmak olabilir.

Için daha büyük bir vs küçük bir dosyayı kullanarak herhangi bir performans etkisi varsa ben include (bu bağlamda) merak ediyorum? Örneğin, bir 200KB dosya ve bir 20KB dosya arasında herhangi bir performans farkı var mı?

Teşekkür ederim.

3 Cevap

Orada bir 200KB ve 20KB dosya arasında bir fark olacak ... Ama muhtemelen bunu fark olmaz: Bir 200KB dosya bu büyük değildir - ve ne zaman genellikle, "küçük" değil bir sürü dosya kullanmak 'Büyük bir uygulama inşa yeniden.

Bir .php dosyası yüklenirken yaparken, zaman iki şey vardır:

  • The PHP source code is "compiled" to "opcodes" -- that's quite equivalent to JAVA bytecode
    • Bu, varsayılan olarak, bir PHP dosyası dahil her zaman yapılır
    • Ancak, APC gibi bazı opcode önbellek kullanımı, bu opcodes hafızada tutulabilir ve bu derleme şeyler artık her zaman bitmedi - büyük olduğu: daha az CPU kullanıldığında anlamına edeceğiz, derleme gibi olacak Artık yapılamaz (it'll be done only once in a while).
  • The opcodes are executed
    • Eğer komut dosyası içeren ne bağlı olarak, bu biraz zaman alabilir, ya da edemez:
    • Dosya sadece işlevleri veya sınıfların tanımları içeriyorsa, bu çok zaman almayacaktır: hiçbir şey idam alacak.
    • Dosya talimatlar varsa, bu ^ ^ daha zaman alacaktır


As a sidnote : in a general situation, you'll gain a lot more time/cpu/resources optimizing your SQL queries, or adding some caching mecanism, than thinking about that kind of stuff.

Be careful with include_once() (and also require_once()), it is more expensive to run than include(). Every time include_once() is run, PHP does a lookup against an internal index of already included files before deciding whether to load the file or not. The more includes in the index, the slower this lookup is. Also when using include() or include_once() try to use absolute paths where possible as this is much speedier than relative paths because you are not forcing PHP to work out the absolute path for you. As ggiroux said, some form of caching like APC will reap massive rewards and render worrying about how many include calls you have irrelevant (largely) (unless you have some poorly written code).

EDIT -

Yukarıdaki aramalar endişesi var başlamak için sadece bir kez bir konudur birkaç bin requires veya includes sizin kod temeli.

Orada bir etkisi kesinlikle, bu yüzden) include_onceyi () yerine (dahil kullandığınızdan emin olun. Belki APC include önbelleği hangi kullanarak düşünebiliriz.