2011-07-19 35 views
0

我有一個查詢4000對象類型的數據需要被拉出並形成json結果。當我在400個數據中運行時,沒問題。但是當我想要提取更多數據時。它給了我一個空白頁面 - 我想,PHP只是停止執行。但是我等待的只有10-20秒。超時設置可能不是問題。這是關於記憶的東西嗎?所以我將memory_limit更改爲512M,然後再次嘗試,仍然沒有改變。json php腳本耗盡時拉大數據

max_execution_time = 30  ; Maximum execution time of each script, in seconds 
max_input_time = 60  ; Maximum amount of time each script may spend parsing request data 
;max_input_nesting_level = 64 ; Maximum input variable nesting level 
memory_limit = 512M  ; Maximum amount of memory a script may consume (128MB) 

那麼我想知道,如果是相關的MySQL,但我真的不知道要改變什麼......

key_buffer_size = 16K 
max_allowed_packet = 16M 
table_open_cache = 4 
sort_buffer_size = 64K 
read_buffer_size = 256K 
read_rnd_buffer_size = 256K 
net_buffer_length = 2K 
thread_stack = 128K 

我在測試框,以便CPU,RAM將不會是問題。

任何想法可能是什麼問題?

回答

0

這不回答這個問題的要求,但你可以保留內存使用的低通過打印外部JSON數組手動:

echo "["; 
$first = true; 
while ($row = mysql_fetch_assoc($result)) { 
    if ($first) 
     $first = false; 
    else 
     echo ","; 
    echo json_encode($row); 
} 
echo "]\n"; 
+0

內存佔用大嗎?我正在使用Drupal,因此我幾乎不想改變代碼。這可能是最後的手段 – Hao

1

設置錯誤報告級別最大:

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

這將幫助你理解問題

+0

仍爲空白頁。即使2個已知的通知錯誤,我總是不顯示 – Hao

+0

發佈代碼,請 – Timur

+0

什麼都不顯示。已知的通知不相關。 – Hao