|
|
1
14
经过更多的研究,我自己发现了问题所在。问题在于
或者,您可以将开始标记一起保留(如下面的注释所述):
我最初的解决方案是添加一个分号,分号同样有效,但如果你问我:
|
|
|
2
6
如果使用eval(),那么就不能利用php加速器。 |
|
|
3
6
如果您使用的是安装了操作码缓存的Web服务器,如
APC
,
至少在代码不经常更改的情况下,您可以使用的解决方案是混合使用存储在数据库中的代码和包含的代码:
我曾经使用过使用此解决方案的软件(磁盘上的文件只不过是数据库中存储的代码的缓存),我的工作还不错——无论如何,比加载每个页面的数据库请求要好得多。。。
|
|
|
4
2
this answer to my question
,即
执行结果
|
|
|
5
1
这允许您在PHP中启用“包含的文件包装器”的情况下包含一个文件:
|
|
|
6
1
只有
参见测试:
|
|
|
7
1
关于上述解决方案的一些想法: 临时文件不要。这对性能非常不利,只是不要这样做。它不仅使您的操作码缓存完全疯狂(缓存命中从未发生+每次都尝试再次缓存),而且还让您头痛的是在高(甚至中等)负载下文件系统锁定,因为您必须写入文件,Apache/PHP必须读取文件。 简单评估()少数情况下可接受;不要经常这样做。事实上,它没有被缓存(糟糕的操作码缓存只是不知道它和以前是同一个字符串);同时,如果您的代码是 内存中的eval()事实上,eval是 很快 在不进行文件操作的情况下对同一事物求值两次 ,这是非常重要的。如果您将它用于不断变化的、小的、内存生成的字符串,那么很明显,选择它是eval——与迭代的include()相比,一次又一次地加载+eval要快很多倍。 TL;博士
|
|
|
8
0
这是我的方法。 它创建并包含临时php文件。 但这样,若要在此函数上运行的代码有错误,则程序将在删除临时文件之前退出 所以我在函数中做了一个自动清洁程序。这样,每次函数运行时,它都会通过超时清除旧的临时文件。您可以在函数开始时通过选项设置或禁用超时 我还添加了“忽略错误”选项,用于解决未删除的临时文件。若忽略错误,程序将继续并删除临时文件。 还有一些项目必须禁用自动清理,因为它每次运行时都会扫描整个目录。这可能会影响磁盘性能。
|