PHP代码生成

时间:2018-01-05 12:21:57

标签: php code-generation

而不是eval()我正在调查使用php-code动态创建.php文件的优缺点。

主要是因为生成的代码应该可供其他访问者使用很长一段时间,而不仅仅是当前会话。生成的php文件是使用专用于此的函数创建的,并且仅在高度受控的条件下创建(没有用户输入将访问这些代码文件)。

因此,性能方面,在更新数据库记录并始终在每次访问时查询数据库时,使用include()创建.php文件以便立即执行时,Web服务器上会加载多少负载?

生成的文件应该经常更新(覆盖),但与执行文件的频率相比并不常见

其他利弊是什么?如果一个用户组合覆盖代码文件与其他用户同时执行的可能性是否会引入复杂的并发冲突解决?使用Mutex?如果访问者经常"观看"几乎不可能覆盖文件。 (执行)他们?

PS。我对替代方法/解决方案感兴趣,以达到相同的"同样的"目标,如:

  1. 作为替代方案,缓存和/或保存的输出缓冲区是不可能的,主要是因为生成的php代码的输出是高度动态的和上下文敏感的
  2. 将代码存储为数据库中的变量并创建动态php代码,该代码可以根据存储的数据执行请求,主要是因为我不想将数据库用作该功能的后端。我不需要搜索数据,查询数据,排名或任何其他数据收集或操作
  3. Memcached,APC等。它不是我想要的缓存功能
  4. 在内存中运行自定义编译二进制文件的独立(非PHP)服务器。不是我在这里寻找的,虽然我想到了这个替代方案。
  5. 修改 关于什么"键入"有很多问题。代码生成。在没有详细说明的情况下,我可以说:它是一个非常依赖于上下文的代码。代码不是基于用户直接输入,而是根据选择,位置和标志输入。喜欢"关闭"与其他对象相关的对象。大多数代码部分以许多不同但非常受控制的方式彼此相关(类似于链接列表,AI代码等中的遗传单元),因此查询数据库是不可能的。一个代码文件将包含一个或多个其他代码文件,依此类推..

1 个答案:

答案 0 :(得分:1)

我在应用程序中做同样的事情。它从MySQL数据库中的数据生成静态PHP代码。我将代码存储在memcached中并使用'eval'来执行它。只有当MySQL数据库中的某些内容发生变化时,才会重新生成PHP。它节省了大量的MySQL读取

相关问题