doran7
Новичок
Честно искал инфу, но ответа свои вопросы не нашел. Просто хочу понять отдельные моменты механизма этого кеширования. Для начала - информация, которая у меня имеется.
Обычная, без кеширования, обработка скрипта интерпретатором
http://ru.wikipedia.org/wiki/Акселератор_PHP
1. Чтение файла PHP-скрипта.
2. Генерация байткода.
3. Выполнение кода.
4. Выдача результата.
В одной серьезной, вроде как, статье (перевод с английского, автор Leendert Brouwer):
http://interway.narod.ru/context/webcoding/PHP/php46.htm
написано следующее: "Каждый раз, когда запускается PHP-скрипт, ядро Zend оптимизирует код скрипта, в результате чего генерируется машинный код, иначе называемый байт-кодом, который, в конце концов, выполняется. После этого сгенерированный для скрипта байт-код уничтожается. Возникает закономерный вопрос: можем ли мы использовать однажды сгенерированный байт-код, если скрипт с того времени не изменился?
Собственно, в этом и состоит механизм кэширования байт-кода. Когда скрипт запускается впервые, сгенерированный для него байт-код сохраняется и выполняется при последующих вызовах этого скрипта, если он не изменился с момента сохранения байт-кода. Если же это произошло, то будет сгенерирован новый байт-код, который заменит предыдущий, и так далее.
Выполнение кэшированных байт-кодов вместо самого скрипта может значительно уменьшить время его выполнения. "
Хочу понять, в каких случаях действует оговорка о возможности использовать однажды сгенерированный байт-код повторно, но если только скрипт с того времени не изменился.
Что может изменить скрипт
1. Редактирование (модификация) скрипта админом
Следующие пункты действуют, сугубое имхо (возможно неверное) только в случае неграмотной программной структуры сайта (шаблонов, скриптов и пр.) - имеется в виду изменение значений каких-гибудь переменных, плейсхолдеров и пр., т.е. какая-то зависимость кода скрипта от данных (контента) веб-страницы.
2. Запрос от неизвестного пользователя
3. Новый неизвестный запрос от известного пользователя
4. Что-то еще
Прошу корифеев помочь разобраться, в частности поделиться ссылками на толковые описания механизма кеширования байт-кода.
Обычная, без кеширования, обработка скрипта интерпретатором
http://ru.wikipedia.org/wiki/Акселератор_PHP
1. Чтение файла PHP-скрипта.
2. Генерация байткода.
3. Выполнение кода.
4. Выдача результата.
В одной серьезной, вроде как, статье (перевод с английского, автор Leendert Brouwer):
http://interway.narod.ru/context/webcoding/PHP/php46.htm
написано следующее: "Каждый раз, когда запускается PHP-скрипт, ядро Zend оптимизирует код скрипта, в результате чего генерируется машинный код, иначе называемый байт-кодом, который, в конце концов, выполняется. После этого сгенерированный для скрипта байт-код уничтожается. Возникает закономерный вопрос: можем ли мы использовать однажды сгенерированный байт-код, если скрипт с того времени не изменился?
Собственно, в этом и состоит механизм кэширования байт-кода. Когда скрипт запускается впервые, сгенерированный для него байт-код сохраняется и выполняется при последующих вызовах этого скрипта, если он не изменился с момента сохранения байт-кода. Если же это произошло, то будет сгенерирован новый байт-код, который заменит предыдущий, и так далее.
Выполнение кэшированных байт-кодов вместо самого скрипта может значительно уменьшить время его выполнения. "
Хочу понять, в каких случаях действует оговорка о возможности использовать однажды сгенерированный байт-код повторно, но если только скрипт с того времени не изменился.
Что может изменить скрипт
1. Редактирование (модификация) скрипта админом
Следующие пункты действуют, сугубое имхо (возможно неверное) только в случае неграмотной программной структуры сайта (шаблонов, скриптов и пр.) - имеется в виду изменение значений каких-гибудь переменных, плейсхолдеров и пр., т.е. какая-то зависимость кода скрипта от данных (контента) веб-страницы.
2. Запрос от неизвестного пользователя
3. Новый неизвестный запрос от известного пользователя
4. Что-то еще
Прошу корифеев помочь разобраться, в частности поделиться ссылками на толковые описания механизма кеширования байт-кода.