2012-07-09 20 views
0

我似乎在這裏有一個問題,可能需要一些建議。我目前有一個在Ebay TradingAPI GetOrders上運行的應用程序。此應用程序將每天運行,並將所有返回的結果存儲在mysql數據庫中。易趣TradingAPI(獲取訂單)使用大量的內存

偶爾腳本會遇到錯誤,如本: -

PHP Fatal error: Allowed memory size of 268435456 bytes exhausted (tried to allocate 261900 bytes) in /home/superget/public_html/myebayextract/functions.php on line 40

我發現了一個解決方案在線,涉及ini_set('memory_limit', '256M');,我想可能有幫助,但問題仍然存在,所以我做了一個頂部檢查內存腳本運行時的用法。運行時佔用100%的內存。

有沒有什麼辦法可以在運行這樣的腳本時真正優化或減少內存使用量?

實際上對內存使用有什麼影響的因素是什麼?

我該如何開始調查?

+1

'我該如何真正開始進行調查.'在函數.php中查看第40行可能 – 2012-07-09 14:53:19

+0

您是否創建了一個包含結果的數組,然後一次創建您的mysql查詢。告訴我們你在做什麼,這會幫助你的情況更好。 – 2012-07-09 14:55:21

+0

幾個月前,我從手寫了我們的EbayAPI-Base(包括GetOrders)。 eBay-APIs很髒(!),並且沒有什麼特別之處。 – Ron 2012-07-09 14:55:49

回答

0

這取決於您使用的方法,但基本上,每次您發送和接收數據時,都會使用大量內存,並且您可能使用大量內存從eBay獲取數據。

如果不使用eBay自己的代碼進行優化將非常困難,但是您應該努力實現的一般想法是儘可能高效地接收您收到的數據以及如何接收數據。

您使用的連接越少,接收的數據量越少,您需要的內存就越少。

+0

爲GetOrder api ...易趣返回其數據的頁面,可以容納最多100每頁。所以我們可以說有1000條記錄,所以我們必須遍歷所有10個頁面的GetOrder api來檢索1000條記錄。我注意到,隨着每一個增加的頁面...... php使用的內存開始逐漸增加,即使查詢新的頁面。對於每個分頁查詢,我將爲這些事務插入到mysql數據庫中。有沒有辦法說每當我去查詢一個新的頁面時「釋放內存」? – 2012-07-11 15:32:42

+0

我相信每次查詢新頁面時都會有新的連接 – 2012-07-11 15:36:45