2013-05-06 63 views
0

我正在運行一個PHP網絡抓取器,從網上商店抓取信息(免責聲明,我有從商店的許可來做到這一點)。刮刀有3個功能:優化一個PHP網絡刮板,以避免500服務器錯誤

  1. 獲取從JSON文件存儲的URL列表(爲便於,讓我們只說我傳遞一個URL到功能雖然)
  2. 功能getLinks爭奪所有的提供的URL頁面上的鏈接,找到「下一個項目」鏈接,進入它,抓取該頁面上的產品鏈接等等。它把它們放在一個數組$allLinks中。
  3. 我運行foreach ($allLinks as $key => $value) {getInfo($value);}
  4. 功能getInfo($value)轉到每個產品URL並從每個單獨的產品頁面獲取產品信息。

下面是完整的代碼http://pastebin.com/SHHbG9EN#

我的服務器上,這是因爲(據我所知)我使用了太多的內存導致錯誤/代碼是相當繁瑣的。我可以將getLinks的結果打印出來,但是一旦我深入瞭解,就會發現500個服務器錯誤(並且沒有任何內容發佈到日誌中)。

我的問題

我應該寫我的結果MySQL和將在減輕程序的負擔?如果是這樣,那麼最好的辦法是什麼?我是否需要(以某種方式)清除我的變量或某些內容以釋放內存?我對PHP很陌生,因此優化代碼的複雜性對我來說是陌生的。

+0

你確定#item_info h2是正確的使用,因爲對於給定的網址,我沒有看到「#item_info h2」。只做了$(「#item_info h2」)長度的firebug conolse檢查,並返回0長度。 – Shridhar 2013-05-06 00:36:06

+0

@Shridhar認爲你看錯了頁面,是的,它存在。 – Jascination 2013-05-06 01:13:05

回答

1
+0

他正在談論他自己的應用程序創建500錯誤,而不是避免他正在抓取的網頁上的500錯誤。 – pauljz 2013-05-06 00:30:53

+0

感謝您的信息..已更新我的答案... – Baba 2013-05-06 00:33:50

+0

我已經添加了,當腳本中存在語法錯誤時它將寫入日誌,但是當它全部是猶太教和正常運行時(並且我得到500錯誤)我在日誌中什麼也得不到。我假設這是一個內存問題,因此我問爲什麼要將數據寫入MYSQL(可能?)從服務器上卸下一些內存 – Jascination 2013-05-06 01:16:48