Есть ли способ эффективно кэшировать PHP include
для повторного использования, без APC и т. Д.
Простой ( хотя и глупый ) пример:
// rand.php
return rand(0, 999);
// index.php
$file = 'rand.php';
while($i++ < 1000){
echo include($file);
}
Опять же, хотя и смешно, эта пара скриптов сбрасывает 1000 случайных чисел.Тем не менее, для каждой итерации PHP должен обращаться к файловой системе ( Правильно? Я не пропустил ни одной функции наследования кэширования, не так ли? )
По сути, как я могу предотвратить предыдущеесценарий, приводящий к 1000 попаданиям в файловую систему?
Единственное соображение, к которому я пришел, до сих пор глупое, и оно может вообще не оказаться эффективным ( не проверял, написал егоздесь возможны ошибки, но вы получите идею ):
// rand.php
return rand(0, 999);
// index.php
$file = 'rand.php';
$cache = array();
while($i++ < 1000){
if(isset($cache[$file])){
echo eval('?>' . $cache[$file] . '<?php;');
}else{
$cache[$file] = file_get_contents($file);
echo include($file);
}
}
Более реалистичный и менее глупый пример:
При включении файловдля генерации представления данный файл представления используется несколько раз в данном запросе ( виджет или что-то еще ). Существует ли реалистичный способ захвата и переоценки сценария представления без попадания в файловую систему?