我不是eval(),而是研究使用php代码动态创建.php文件的利弊。
主要是因为所生成的代码应该可供其他访问者使用,而且可以使用很长时间,而不仅仅是当前会话。生成的php文件是使用专用于此的函数创建的,并且只在高度控制的条件下创建(用户输入永远不会到达这些代码文件)。
因此,就性能而言,与更新数据库记录和每次访问时总是查询数据库相比,在其他地方使用include()创建..php文件以便立即执行时,when服务器的负载是多少?
生成的文件应该非常频繁地更新(覆盖),但与它们的执行频率相比不太频繁。
其他的赞成/反对意见是什么?在其他用户正在执行代码文件的同时,是否应该组合一个用户覆盖代码文件,从而引入复杂的并发冲突解决?使用Mutex?如果访问者不断地“查看”(执行)文件,那么几乎不可能覆盖这些文件吗?
PS。我对实现“相同”目标的替代方法/解决方案不感兴趣,如:
编辑:对于生成什么“类型”代码有很多疑问。无需详细说明,我可以说:这是非常敏感的上下文代码。代码不是基于用户的直接输入,而是基于选择、位置和标志的输入。就像“封闭”对象与其他对象的关系。大多数代码部分以许多不同但非常可控的方式相互关联(类似于链接列表、人工智能代码中的遗传细胞等),因此查询数据库是不可能的。一个代码文件将包含一个或多个其他文件,等等。
发布于 2018-01-05 12:58:56
我在应用程序中也做了同样的事情。它从MySQL数据库中的数据生成静态PHP。我将代码存储在memcached中,并使用‘eval’来执行它。只有当MySQL数据库中的某些内容发生变化时,我才重新生成PHP。它节省了大量的MySQL读物
https://stackoverflow.com/questions/48113567
复制相似问题