PHP, AJAX :большие данные усекаются

Проблема

Я использую jQuery для размещения (относительно )большого объема данных в веб-системе. Я перехожу с Ubuntu на CentOS (болезненный процесс ). Проблема в том, что получаемые данные усекаются. Отправка одних и тех же данных с сервера клиенту не приводит к усечению.

Объем «отправляемых» данных (, то есть то, что я вижу при отладке Javascript ), составляет 116 902 байта (правильный объем данных ), тогда как объем получаемых данных составляет примерно 115 668 байт :это число, кажется, варьируется, что наводит меня на мысль, что проблема может быть связана со временем. Транзакция завершается (получение, ответ )примерно через 3,1 секунды, не так много времени. Есть ли какие-либо настройки, которые я должен проверить?

Помимо этой идеи, моя установка PHP настроена на прием 8 МБ почтовых данных и использование до 128 МБ физической памяти, что кажется достаточным.

Код jQuery ниже. Я совершенно уверен, что это не проблема, но я включил его по просьбе.

Прием:

function synchronise_down()
{
    $.ajax({url: "scripts/get_data.php",
        context: document.body,
        dataType: "json",
        type: "POST",
        success: function(result)
            {
                // Fix the state up.
                update_data(result);

                // Execute on syncronise.
                execute_on_synchronise();
            },
        error: function(what, huh)
            {
                IS_WAITING = false;
            }
        });
}

Отправка:

function synchronise_up()
{
    var serialised = MIRM_MODEL.serialise();
    LAST_SERIALISED = new Date().getTime();
    $.ajax({url: "scripts/save_model.php",
        context: document.body,
        dataType: "json",
        data: {"model":serialised},
        type: "POST",
        success: function(result)
            {
                // Fix the state up.
                update_data(result, true);

                // Execute on syncronise.
                execute_on_synchronise();
            },
        error: function(what, huh)
            {
                IS_WAITING = false;
            }
        });
}

Обходной путь (Не назвал бы это решением)

Редактировать :Я "исправил" это, но не обязательно понял, в чем проблема и как ее решить. Это интересная проблема, поэтому я опишу свой обходной путь и оставлю вопрос открытым.

Что я делаю, так это то, что вместо того, чтобы позволять jquery обрабатывать сериализацию моих больших данных, я сначала делаю это сам, по сути сериализуя дважды. код для этого выглядит следующим образом:

function synchronise_up()
{
    var serialised = JSON.stringify(MIRM_MODEL.serialise());
    LAST_SERIALISED = new Date().getTime();
    $.ajax({url: "scripts/save_model.php",
        context: document.body,
        dataType: "json",
        data: {"model":serialised},
        type: "POST",
        success: function(result)
            {
                // Fix the state up.
                update_data(result, true);

                // Execute on syncronise.
                execute_on_synchronise();
            },
        error: function(what, huh)
            {
                IS_WAITING = false;
            }
        });
}

Важная строка, конечно,:

var serialised = JSON.stringify(MIRM_MODEL.serialise());

Теперь, когда он попадает на сервер, мне нужно расшифровать эти данные, потому что они были сериализованы дважды. Это «решение» :связано с дополнительными затратами на отправку большего количества данных, выполнение большего объема работы. Остается вопрос :, в чем проблема и каково реальное решение?

9
задан Liam M 25 July 2012 в 08:36
поделиться