我使用SimplePie與PHP 5.3(啓用gc)來解析我的RSS提要。使用$item->get_permalink()
當
但是,我的記憶:做類似以下時,這工作得很好,沒有任何問題:
$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源)調試看起來像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
- 使用
__destroy
提到here(即使它應該是固定的爲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
截至目前。
我能做些什麼來解決這個問題?
怎麼樣拉請求了SimplePie? – uzyn
而當你在它的時候,從該函數中移除靜態變量並移動到該類,這樣就不需要向與此無關的函數引入另一個可選參數。如果您只希望能夠在類函數中重置它,則可以將其設置爲私有靜態。 +1查找原因。 – hakre
嗨h2oooooo 你的解決方案似乎解決了我使用php 5.2.17時遇到的問題。但如果我使用5.3.28的服務器,它似乎無法正常工作。這是預期的嗎? (有沒有解決這個問題的另一種方法?) 謝謝! –