У меня запущено приложение PHP, и я загружаю PDF для обработки. Я не переопределял никакие значения PHP ini, поэтому я ожидаю, что сообщение сможет обрабатывать 32 МБ данных и время ожидания 60 секунд.
Когда я загружаю большой документ (в данном случае 7,7 МБ), приложение не работает двумя разными способами.
Тайм-аут, по-видимому, проявляется в том, что внутренняя страница PHP не получает никаких данных, то есть время ожидания переноса, а не время ожидания моей страницы. Я могу справиться с этим сценарием из-за передаваемых данных и передать полезное сообщение об ошибке. Кажется, я не могу воспроизвести это на моей локальной машине для разработки.
Вторая проблема вызывает недоумение, так как это происходит почти сразу на моем компьютере разработчика, а также, если отклик страницы менее 1 минуты на GAE. Я могу загрузить документ размером 4,1 МБ, и все хорошо. 7,7 Мб док вызывает это каждый раз. Заголовки выглядят хорошо, а данные формы содержат все необходимые данные, хотя я не пытался декодировать данные формы.
Есть ли другой параметр PHP, вызывающий это? Есть ли способ изменить это? Что может происходить? Может ли это быть javascript, поскольку я использую программу чтения файлов javascript в зоне drop5 HTML5 — вот соответствующие части кода обработчика:
function loadSpecdoc(file) {
var acceptedTypes = {
'application/pdf' : true
};
if (acceptedTypes[file.type] === true) {
var reader = new FileReader();
reader.onload = function(event) {
$.ajax({
url : "my_handler.php",
type : 'POST',
dataType : "json",
data : {
spec_id : $('#list_spec_items_spec_id').val(),
file_content : event.target.result
},
success : function(response) {
// Handle Success
},
error : function(XMLHttpRequest, textStatus, exception) {
// Handle Failure
},
async : true
});
};
reader.readAsDataURL(file);
} else {
alert("Unsupported file");
console.log(file);
}
};
Я слышал о хранилище BLOB-объектов, но у меня какой-то крайний срок, и я не могу найти документацию о том, как заставить его работать в javascript, и не могу загрузить файл в мое PHP-приложение, чтобы использовать его.
Любая помощь высоко ценится.
РЕДАКТИРОВАТЬ: Я только что проверил в сетевой консоли Chrome Javascript, и есть 2 размера в столбце «Размер содержимого», 79B и 0B, я предполагаю, что это размер вверх (79B) и ответ (0B). В таком случае это похоже на проблему с JavaScript.
РЕДАКТИРОВАТЬ 2: Только что нашел журнал для моего приложения и там написано, что лимит содержимого сообщения составляет около 8 МБ … не совсем те 32 МБ, которые я ожидал:
06: 26: 03.476 Предупреждение PHP: Неизвестно: длина содержимого POST 10612153 байта превышает ограничение 8388608 байтов в поле Неизвестно в строке 0
РЕДАКТИРОВАТЬ 3: Просто нашел это по границам:
https://cloud.google.com/appengine/docs/php/requests#PHP_Quotas_and_limits
Я ожидаю 32 МБ сообщения, при условии, что я могу загрузить его достаточно быстро 🙂 Как мне это исправить?
Задача ещё не решена.
Других решений пока нет …