2013-03-30 56 views
2

我寫了一個簡單的爬蟲使用簡單的HTML Dom解析器來刮一些東西。PHP - 什麼是「分段錯誤(核心轉儲)」 - 錯誤的意思是?

這是一個簡單的腳本只能運行一個進程,沒有任何大規模的。但經過一段時間後,它在shell中運行時會產生一個"Segmentation fault (core dumped)"-error,

當我運行在瀏覽器腳本,它說

"Error: The connection to the server was reset while the page was loading.". 

我已儘快作出肯定unset()每一個變量和php.ini還增加了memory_limit,但我仍然得到這個錯誤:/

有人知道它是什麼意思以及如何解決它?

感謝您的任何建議!

+3

http://en.wikipedia.org/wiki/Segmentation_fault這將是PHP本身(或其擴展之一)的崩潰,而不是代碼中的錯誤。 –

+0

有趣,謝謝!我一直想要一個很好的理由來終於開始使用Java,並停止使用PHP :) – Crayl

+3

@MichaelBerkowski他應該也知道崩潰很可能是*因爲*他的代碼,即使它是語言的錯誤,它崩潰而不是顯示一個錯誤。另外Crayl:你會發現Java通常比PHP更難作爲服務器端腳本,所以如果你正在尋找一個簡單的解決方案,就不要切換到。 – Dave

回答

0

'核心傾銷'我認爲只是意味着程序發佈了內存並退出。

當您嘗試訪問不屬於您的內存部分或者通過引用未初始化的或無效的指針時,通常會出現分段錯誤。

你可以傳遞/使用壞的句柄或超出某個地方的數組?

+0

「核心轉儲」表示系統在某處爲了進行診斷而生成了[核心轉儲](https://en.wikipedia.org/wiki/Core_dump)。 –

2

如果其他人有與簡單的HTML Dom解析器相同的問題:在這種情況下,錯誤是由於網頁太長造成的。 SHDP具有預配置的「MAX_FILE_SIZE」。您必須在simple_html_dom.php的來源中增加它。見線:

define('MAX_FILE_SIZE', 600000); 
+0

如果這是解決問題的辦法,你應該接受這個答案。在這裏回答你自己的問題完全沒問題。 –

0

我只是有同樣的問題。 我是做

return $var; 

導致錯誤。然而返回

return [$var][0]; 

工作。我確信這有一個很好的解釋,但我不知道。

5

我有這個問題,當一個偶然發生遞歸循環,所以它內存不足。但它告訴我的方式是通過發出Segmentation fault (core dumped)錯誤!

所以看看你最近寫的代碼,並檢查你是否犯了這樣的錯誤!我的例子很簡單(和愚蠢)。我只是有點快接受自動完成的建議:)

public function getAttendees() { return $this->getAttendees(); }

希望這可以幫助別人,將來

1

我已經受夠了,因爲虛擬機的硬盤空間結束,由於太/ tmp文件夾中的大量數據