__ Ile autoload PHP opcode önbellek çalışır?

2 Cevap php

Bu temel ise, ben PHP OO hakkında ben olabildiğince çok şey öğrenmeye çalışıyorum ve yavaş yavaş (çok sınırlı) nasıl kullanılacağını öğreniyorum üzgünüm.

__ Özdevinimli_yükle () herhangi bir PHP opcode önbellek en etkilemez Yani ben bilmek isteyen ki?

2 Cevap

(Disclaimer : I only know APC)

Ne bir opcode önbellek yapmaktır:

  • Bir dosya dahil olduğunda / gerekli, o dosyanın tam yolunu almak
  • check if the opcodes corresponding to that file are already in RAM (in opcode cache)
    • evet eğer onlar yürütür, böylece bu opcode dönmek
    • eğer hayır ise, dosya yüklemek ve opcodes onu derlemek; ve önbellek mağaza opcodes.

Önemli nokta, burada, giriş noktasıdır: dosyanın tam yoludur.


What autoloading generally do is :

  • Bir sınıfın adını almak
  • Bir dosyanın adını dönüştürmek
  • include / bu dosyayı gerektirir

Yani, opcode önbellek (dosyanın tam yolunu ve / gerekli dahil olduğu gerçeği) için ilgili bilgiler hala burada.

Sonuç olarak, autoload op kod önbelleğe alma ile herhangi bir sorun getirmek gerekir.

(And, when using APC, it doesn't, as far as I can tell)

Kodu önbelleklerini autoloading ile (ya da en azından çalışması gerekir) çalışır ama potansiyel bir performans isabet alabilir.

Dan Remember: be nice to byte code caches:

<arnaud_> does autoload have a performance impact when using apc ?
<Rasmus_> it is slow both with and without apc
<Rasmus_> but yes, moreso with apc because anything that is autoloaded is pushed down into the executor
<Rasmus_> so nothing can be cached
<Rasmus_> the script itself is cached of course, but no functions or classes
<Rasmus_> Well, there is no way around that
<Rasmus_> autoload is runtime dependent
<Rasmus_> we have no idea if any autoloaded class should be loaded until the script is executed
<Rasmus_> top-level clean deps would speed things up a lot
<Rasmus_> it's not just autoload
<Rasmus_> it is any sort of class or function declaration that depends on some runtime context
<Rasmus_> if(cond) function foo...
<Rasmus_> if(cond) include file
<Rasmus_> where file has functions and classes 
<Rasmus_> or heaven forbid: function foo() { class bar { } }

ve this mail from Ramus:

To clarify, of course conditionally included files get compiled and cached. The issue is not the included files but the resulting conditionally defined classes and functions needing to be redefined on every request. Whether that is significant or not comes down to the specifics of the situation, but there is no doubt that it is slower. It comes down to a NOP vs. a FETCH_CLASS, for example and the NOP is obviously way faster.