【发布时间】:2023-03-15 07:35:01
【问题描述】:
我正在使用SimplePie 和 PHP 5.3(启用 gc)来解析我的 RSS 提要。这在执行以下操作时效果很好并且没有问题:
$simplePie = new SimplePie();
$simplePie->set_feed_url($rssURL);
$simplePie->enable_cache(false);
$simplePie->set_max_checked_feeds(10);
$simplePie->set_item_limit(0);
$simplePie->init();
$simplePie->handle_content_type();
foreach ($simplePie->get_items() as $key => $item) {
$item->get_date("Y-m-d H:i:s");
$item->get_id();
$item->get_title();
$item->get_content();
$item->get_description();
$item->get_category();
}
内存调试超过 100 次迭代(使用不同 RSS提要):
但是当使用$item->get_permalink() 时,我的内存调试看起来像这样超过 100 次迭代(使用 不同 RSS 提要)。
产生问题的代码:
foreach ($simplePie->get_items() as $key => $item) {
$item->get_date("Y-m-d H:i:s");
$item->get_id();
$item->get_title();
$item->get_permalink(); //This creates a memory leak
$item->get_content();
$item->get_description();
$item->get_category();
}
我尝试过的事情:
- 使用
get_link代替get_permalink - 使用提到的
__destroyhere(即使它应该在 5.3 中修复)
当前调试过程:
我似乎已经将问题追溯到SimplePie_Item::get_permalink -> SimplePie_Item::get_link -> SimplePie_Item::get_links -> SimplePie_Item::sanitize -> SimplePie::sanitize -> SimplePie_Sanitize::sanitize -> SimplePie_Registry::call -> SimplePie_IRI::absolutize到现在为止。
我能做些什么来解决这个问题?
【问题讨论】:
标签: php memory-leaks simplepie