Есть ли способ определить константы, которые сохраняются в памяти при загрузке PHP?

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

Перед тем, как люди начнут перечислять различные способы объявления вещей, которые будут доступны по страницам и областям: я не, задавая это с помощью удобства кодирования, а скорее с точки зрения производительности.

Кажется, что отходы продолжают загружать вещи, которые никогда не меняются, со страниц или баз данных и т.д. при каждом выполнении script. Будучи процессом на стороне сервера, я бы подумал, что у PHP есть способ читать вещи в памяти один раз и всегда иметь их.

Ответ 1

То, что вы ищете, это кеш-код операции. Кэш-коды операций работают, сохраняя скомпилированное содержимое файлов PHP в общей памяти, а затем используя эти данные для короткого замыкания стандартного процесса синтаксического анализа кода, когда файл включен/требуется в будущем.

Кэш канонического кода операции в данный момент является PHP opcache extension, но существует целый ряд других кеш-кодов операций, включая APC и XCache.

Кэш-память Opcode не кэширует данные из баз данных. Существуют и другие расширения, которые вы можете использовать, чтобы помочь в этом процессе, например APCu, который хранит их в общей памяти, или memcached, который хранит их во внешнем процессе. Однако это не автоматическое, поскольку для кэширования данных из базы данных требуется знание некоторых приложений, чтобы знать, что полезно для кеширования, и обрабатывать недействительность кэша при обновлении базы данных.

Ответ 2

В общем случае php представляет собой однопроцессорную среду, и она фактически не запускается постоянно (в отличие от java). Php начинает работать только тогда, когда получает команду для этого. Затем он анализирует код на код операции и в конечном итоге выполняет его. И это технически происходит по каждому запросу (или команде CLI).

Однако существует несколько способов кэширования кода операции с небольшими усилиями с APC: http://www.php.net/manual/en/book.apc.php