Механизм кеширования байт-кода PHP-скриптов

doran7

Новичок
fixxxer писал:
php работает следующим образом: php-код парсится на токены, токены конвертируются в опкоды, опкоды выполняются zend vm.
опкод кэшер кэширует результат первых двух операций.
Это ценное инфо. Где можно почитать что есть токены и как они кешируются вместе с опкодами?
 

Redjik

Джедай-мастер
Ты же даже не читал =)

к таковым, например, относится инструкция включения в программу кода внешнего файла, имя которого выясняется только на этапе исполнения программы - к примеру, вводится пользователем
расскажи тогда примерный сценарий, как ты себе это представляешь?
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
а чем __set_state не устраивает?
всем устраивает кроме того, что он не прописан в классах

проверять наличие метода у всех объектов трудно - например, у объекта, который лежит в приватном поле другого объекта

2я проблема var_export - если в момент инклюда класс не загрузится по автолоаду, скрипт повалится по fatal error, в отличие от serialize,
[root@vm ~]# php -r 'var_export (new StdClass);'
stdClass::__set_state(array(
))
[root@vm ~]# php -r 'stdClass::__set_state(array());'
Fatal error: Call to undefined method stdClass::__set_state() in Command line code on line 1

# php -r 'A::__set_state(array());'
Fatal error: Class 'A' not found in Command line code on line 1

# php -r '$x = unserialize("O:1:\"A\":0:{}"); var_dump($x);'
class __PHP_Incomplete_Class#1 (1) {
public $__PHP_Incomplete_Class_Name =>
string(1) "A"
}
 

Redjik

Джедай-мастер
Благодарю, Маэстро. Это то что надо. Интуитивно чувствовал, что надо Zend Engine подробно просматривать, но времени на такие дела в обрез... запарка по основным делам.
http://phpclub.ru/talk/threads/Механизм-кеширования-байт-кода-php-скриптов.74767/#post-669290
0_о
 

fixxxer

К.О.
Партнер клуба
grigori
а, ну то есть ты хочешь полноценный файловый object persister, понял. мне хватает для частных случаев
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
fixxxer ну как-бы да, cache engine для фреймворка
 
Сверху