而不是eval()
我正在调查使用php-code动态创建.php文件的优缺点。
主要是因为生成的代码应该可供其他访问者使用很长一段时间,而不仅仅是当前会话。生成的php文件是使用专用于此的函数创建的,并且仅在高度受控的条件下创建(没有用户输入将访问这些代码文件)。
因此,性能方面,在更新数据库记录并始终在每次访问时查询数据库时,使用include()
创建.php文件以便立即执行时,Web服务器上会加载多少负载?
生成的文件应该经常更新(覆盖),但与执行文件的频率相比并不常见
其他利弊是什么?如果一个用户组合覆盖代码文件与其他用户同时执行的可能性是否会引入复杂的并发冲突解决?使用Mutex?如果访问者经常"观看"几乎不可能覆盖文件。 (执行)他们?
PS。我不对替代方法/解决方案感兴趣,以达到相同的"同样的"目标,如:
修改 关于什么"键入"有很多问题。代码生成。在没有详细说明的情况下,我可以说:它是一个非常依赖于上下文的代码。代码不是基于用户直接输入,而是根据选择,位置和标志输入。喜欢"关闭"与其他对象相关的对象。大多数代码部分以许多不同但非常受控制的方式彼此相关(类似于链接列表,AI代码等中的遗传单元),因此查询数据库是不可能的。一个代码文件将包含一个或多个其他代码文件,依此类推..
答案 0 :(得分:1)
我在应用程序中做同样的事情。它从MySQL数据库中的数据生成静态PHP代码。我将代码存储在memcached中并使用'eval'来执行它。只有当MySQL数据库中的某些内容发生变化时,才会重新生成PHP。它节省了大量的MySQL读取