У меня есть эта функция в контроллере ImportController. php, я пропускаю файл для импорта с использованием Laravel Excel библиотеки ...
- Laravel версии :
5.5
- Php Версия:
PHP 7.2.19-0ubuntu0.18.10.1 (cli) (built: Jun 4 2019 14:46:43) ( NTS )
Один лист, который отправляет клиент, занимает много времени. Затем я делаю индикатор выполнения, чтобы клиент получал обратную связь при импорте / сохранении данных с листа.
- Это функция javascript, которая отправляет лист и токен, и если это ajax запрос.
.....
let fd = new FormData();
fd.append(_archiveInputId, archivoSeleccionado.files[0]);
fd.append("_token", window.Laravel.csrfToken);
fd.append("isHttpRequest", true);
let xmlHTTP = new XMLHttpRequest();
xmlHTTP.upload.addEventListener("progress", progressFunction, false);
xmlHTTP.addEventListener("load", transferCompleteFunction, false);
xmlHTTP.addEventListener("error", uploadFailed, false);
xmlHTTP.addEventListener("abort", uploadCanceled, false);
xmlHTTP.responseType = 'json';
xmlHTTP.response = 'json';
xmlHTTP.open("POST", _url, true);
xmlHTTP.send(fd);
.....
/**
* Progress Function
* @param evt
*/
function progressFunction(evt) {
console.log(evt);
}
public function import(ImportFormRequest $request)
{
$isHttpRequest = $request->has('isHttpRequest') ? $request->has('isHttpRequest') : false;
if($isHttpRequest){
echo "creating EventsImport class";
flush();
sleep(1);
}
$import = new EventsImport(EventsImport::TYPE_SIMPLE, $request->file('sheet'));
try{
if($isHttpRequest){
echo "importing data from sheet";
flush();
sleep(1);
}
Excel::import($import, $request->file('sheet'));
}catch (\Exception $e){
return $this->returnJsonResponseHttpRequest("nok","Erro ao realizar importação! Erro: ".$e->getMessage());
}
}
Эти выходы echo "importing data from sheet"
предназначены для тестирования.
Я пробовал с:
ob_flush();
flush();
php.ini -> output_buffering=Off
.htaccess -> mod_env.c -> SetEnv no-gzip 1
Но никто не работал (в laravel). В тестах снаружи Laravel ob_flu sh и грипп sh отлично работает.
У кого-нибудь есть идеи?