我有一个查询需要提取4000对象类型的数据并形成一个json结果。当我在400个数据内运行时,没关系。但是当我想要提取更多数据时。它给了我空白页 - 我想php刚刚停止执行。但我等待的只有10-20秒。超时设置可能不是问题。它是关于记忆的东西。所以我将memory_limit更改为512M并再次尝试,仍然没有变化。
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 :(得分:1)
将错误报告级别设置为最大值:
error_reporting(E_ALL);
ini_set('display_errors',1);
这将帮助您理解问题
答案 1 :(得分:0)
这不能回答问题,但你可以通过手动打印外部JSON数组来降低内存使用率:
echo "[";
$first = true;
while ($row = mysql_fetch_assoc($result)) {
if ($first)
$first = false;
else
echo ",";
echo json_encode($row);
}
echo "]\n";