Aynı dosya ben dahil her zaman tokenized?

3 Cevap php

Bu soru PHP ayrıştırma motor hakkında.

Ben bir tek çalışma zamanında bir dosyayı birden çok kez eklediğinizde, PHP bunu her zaman tokenize yok ya da bir önbellek tutmak ve sadece sonraki kapanımlardan derlenmiş kod çalışır?

EDIT: Daha fazla bilgi: Ben harici önbelleğe alma mekanizmasını kullanarak değilim ve ben sırasında same dosya dahil edilmeden birden çok kez uğraşıyorum the same request.

EDIT 2: Ben dahil çalışıyorum dosyası usul kodu içeriyor. Ben PHP dahili hız nedenlerle dosyanın dizgecikli sürümü izler eğer include() o, ben sadece merak ediyorum her zaman yürütülecek istiyorum.

3 Cevap

Böyle APC gibi bir PHP bytekod önbelleği kullanmak gerekir. Bu izleyen isteklerde bir PHP sayfası bir derlenmiş sürümünü yeniden kullanmak, ne istediğinizi başarmak olacaktır. Aksi takdirde, PHP, dosyayı okur tokenizes ve her istek üzerine derler.

Look at include_once(). It will include it again.

Ayrıca nesneleri kullanıyorsanız. __autoload() Bak

Ben sadece çok VolkerK bulunuyor gibi, temel bir test yazdı. İşte ben test ne:

<?php
file_put_contents('include.php','<?php echo $i . "<br />"; ?>');

for($i = 0; $i<10; $i++){
    include('include.php');
    if($i == 5){
    	file_put_contents('include.php','<?php echo $i+$i; echo "<br />"; ?>');
    }
}

?>

Bu, aşağıdaki üretilir:

0
1
2
3
4
5
12
14
16
18

Bu dosyanın mtime dayalı önbelleklerini sürece Yani, her içerir ayrıştırır görünüyor. Büyük olasılıkla yerine standart include_once() kullanmak isteyeyim include (). Umarım ki olur!