PHP 5.3.28中未被清除的静态函数缓存?

3
我正在使用PHP 5.2.17的SimplePie解析我的RSS源,通过WordPress插件feedwordpress。如果我确保在IRI.php文件中使用this patch,这将顺利且没有问题。
然而,如果我将PHP更改为使用版本5.3.28,则会出现内存泄漏(或其他内存泄漏)导致我的网站崩溃。有什么想法是什么原因导致此问题/如何解决?
换句话说,是否有理由认为this patch应该在PHP 5.2中工作,而在PHP 5.3中不起作用?
谢谢。

补丁看起来很干净,你的崩溃日志有什么错误信息? - Gowri
谢谢Gowri。我使用托管的VPS,因此无法访问所有日志。我应该请求哪些错误日志?(我在FTP中检查过,没有看到相关的error_logs文件) - Tal Galili
1个回答

6

PHP 5.3与PHP 5.2不完全向后兼容,

在您的情况下,使用clearstatcache()可能是内存泄漏的原因。

正如您在从PHP 5.2.x迁移到PHP 5.3.x文档中所看到的:

默认情况下,clearstatcache()不再清除realpath缓存。

可以通过显式地$clear_realpath_cache参数设置为true来解决此问题。

clearstatcache(true)

非常有趣的Uri!我应该把那段代码放在哪里?(在IRI.php中吗?在开头还是其他地方?) - Tal Galili
@TalGalili 我建议直接将其包含在SimplePie源代码中。☺(我曾考虑从这里链接到他们的源代码,但后来发现了你在他们Github问题上的最近活动...) - Tomer Cohen
@TomerCohen - 我很乐意帮忙。但是应该放在哪里呢? - Tal Galili
SimplePie_IRI 的析构函数中添加这行代码应该就可以解决问题了。 - Uri Goren
谢谢Uri。 只是为了确认,您是指将其添加到“__destruct()”的开头吗? 并且它是否与PHP 5.2兼容? - Tal Galili
1
我将它放在__destruct()函数的结尾处,PHP 5.2默认清除realpath缓存,因此这不应该有任何影响。 - Uri Goren

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接