2011-06-30 59 views
4

它不顯示任何錯誤,只是一個空白頁。在我調用我的函數來獲取記錄之前,我嘗試了die('test'),但是當我在我的檢索行函數之後放置die('test')時,我只能看到一個空白頁面(on chrome it says this: Error 324 (net::ERR_EMPTY_RESPONSE): The server closed the connection without sending any data.)檢索大型數據庫記錄(〜5MB)時PHP(或MySQL)崩潰

。我試過了(用128M,-1,64M等)

ini_set('memory_limit', -1); 

沒有運氣。我使用mysqli來檢索記錄和一個簡單的查詢,如「從tblBackup選擇數據」(數據庫中只有1條記錄)

任何幫助嗎?

在此先感謝

更新: 我尾apache的錯誤日誌和我得到這個試圖加載頁面時,

[Thu Jun 30 13:47:37 2011] [notice] child pid 25405 exit signal Segmentation fault (11) 
+0

查找mysql和web服務器日誌,從php.ini啓用錯誤報告和錯誤日誌記錄。另請注意,您無法在運行時設置memory_limit。 –

+0

@eyazici memory_limit可以在運行時改變'PHP_INI_ALL' – datasage

+0

好的,MySQL服務器日誌顯示沒有錯誤,但我尾巴的Apache日誌,我得到這個錯誤 @eyazici [Thu Jun 30 13:47:37 2011] [notice ]孩子pid 25405退出信號分段錯誤(11) – Andre

回答

2

執行時間結帳的php.ini變量。聽起來像PHP可能會超時。

max_execution_time =3000 
max_input_time = 6000 

此外,您可能會在.ini級別完成此操作,但您可以添加此操作以獲取PHP錯誤。把這些放在你的文件頂部:

error_reporting(E_ALL); 
ini_set('display_errors', '1'); 
+0

仍然是同樣的事情......我懷疑它的時間限制,因爲空白頁立即出現,而不是等待30秒左右後。 – Andre

0

那麼,在那裏的人。但在一天結束時:處理查詢是否是一種好方法?如果你有很多結果,那麼把它們限制下來..也許用分頁?

因爲是的,你可以設置更高的限制,但在更長的一段時間..它真的是最有效的方法嗎?

+0

我只有一個記錄在表中,不需要分頁。 – Andre

+0

那麼它一定是一些緩存或什麼?爲什麼這麼大? –

1

什麼是max_allowed_packet的客戶端和服務器設置?如果它小於您嘗試發送的〜5MB blob,則連接將被終止。

+0

MySQLd是16MB,我將它改爲32MB。依然沒有。我將如何更改MySQL的最大數據包在PHP? – Andre

+0

max_packet用於mysql客戶端<->服務器通信。 PHP實際上並沒有任何關係,因爲PHP只是與mysql api庫進行交流,然後再進行連接。 –

+0

因此,MySQL的API(pdo_mysql我假設)沒有最大數據包限制? – Andre

0

在編譯php時,我的--with-pdo-mysql = [DIR]標誌似乎導致了這個問題。我刪除了[DIR]並將其留空。問題沒有了。