Генерация PHP кода

Вместо eval() Я изучаю плюсы и минусы создания файлов .php на лету с использованием php-кода.

Главным образом потому, что сгенерированный код должен быть доступен для других посетителей и в течение длительного периода времени, а не только для текущего сеанса. Сгенерированные php-файлы создаются с использованием функций, предназначенных для этого и только для этого, и в строго контролируемых условиях (пользовательский ввод никогда не достигнет этих файлов кода).

Таким образом, с точки зрения производительности, какая нагрузка возлагается на веб-сервер при создании .php-файлов для мгновенного выполнения с использованием include() позже по сравнению с обновлением записи базы данных и всегда запрашивать базу данных при каждом посещении?

Сгенерированные файлы должны обновляться (перезаписываться) довольно часто, но не очень часто по сравнению с тем, как часто они будут выполняться

Каковы другие плюсы / минусы? Должна ли возможность сочетания одного пользователя, перезаписывающего файлы кода в то же время, что и другие, выполняющего их в настоящее время, вводить сложное одновременное разрешение конфликтов? Используете Mutex? Возможно ли перезаписать файлы, если посетители постоянно их «просматривают» (исполняют)?

PS. я не заинтересованы в альтернативных методах / решениях для достижения «той же» цели, например:

  1. Кэшированные и / или сохраненные выходные буферы, в качестве альтернативы, исключены, главным образом потому, что вывод из сгенерированного php-кода является очень динамичным и контекстно-зависимым
  2. Хранение кода в качестве переменных в базе данных и создание динамического php-кода, который может выполнять то, что запрашивается, на основе хранимых данных, главным образом потому, что я не хочу использовать базу данных в качестве бэкэнда для этой функции. Мне никогда не нужно искать данные, запрашивать их для агрегации, ранжирования или любого другого сбора или манипулирования данными
  3. Memcached, APC и так далее. Я не хочу кешировать
  4. Автономный (не PHP) сервер с настраиваемым скомпилированным двоичным файлом, работающим в памяти. Не то, что я ищу здесь, хотя эта альтернатива пришла мне в голову.

РЕДАКТИРОВАТЬ:
Есть много вопросов о том, какой «тип» кода генерируется. Не вдаваясь в подробности, могу сказать: это очень контекстно-зависимый код. Код не основан на прямом вводе пользователем, но вводится с точки зрения выбора, положения и флагов. Как «закрытые» объекты по отношению к другим объектам. Большинство частей кода связаны друг с другом многими различными, но очень контролируемыми способами (аналогично связанным спискам, генетическим ячейкам в AI-code и так далее), поэтому запрос к базе данных исключен. Один файл кода будет включать один или несколько других и т. Д.

0

Решение

Я делаю то же самое в приложении. Он генерирует статический код PHP из данных в базе данных MySQL. Я храню код в memcached и использую «eval» для его выполнения. Только когда что-то меняется в базе данных MySQL, я регенерирую PHP. Это экономит очень много чтения MySQL

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]