【问题标题】:json php script running out when pulling big data提取大数据时json php脚本耗尽
【发布时间】:2011-07-19 08:15:53
【问题描述】:

我有一个查询,需要提取 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 不会成为问题。

知道可能是什么问题吗?

【问题讨论】:

    标签: php mysql json


    【解决方案1】:

    将错误报告级别设置为最高:

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

    这将帮助您理解问题

    【讨论】:

    • 仍然是空白页。即使是我经常遇到的 2 个已知通知错误也没有显示
    • 什么都不显示。已知通知不相关。
    【解决方案2】:

    这并没有回答所问的问题,但您可以通过手动打印外部 JSON 数组来保持较低的内存使用率:

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

    【讨论】:

    • 内存占用很大?我正在使用 Drupal,所以我几乎没有想过要更改代码。这可能是最后的手段
    猜你喜欢
    • 1970-01-01
    • 2012-01-23
    • 1970-01-01
    • 2018-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-01
    相关资源
    最近更新 更多