Имея дело с веб-сайтами, помните золотое правило.
PHP ДОЛЖЕН УМИРАТЬ.
Нубс полагает, что это люди, чинящие PHP.Это не так.Это цикл HTTP-запросов.
Request In> PHP> Response Out> PHP процесс умирает.
Это относится только к веб-серверам и браузерам, а не к CLI PHP.Но дело в том, что вы можете получить тайм-ауты Apache, если ваш сценарий занимает столько времени, сколько вы говорите.
Одним из решений может быть установка cron, который проверяет файл и, если он его находит, обрабатывает его, сброс номера строки в текстовом файле, который может проверить ваш браузер, что означает, что вы можете получить прогресс:
<?php
if (file_exists('/some/csv/to/process.csv')) {
// open file
// get row to work on
// process row
// update progress file with next line number
}
Между тем, вы можете настроить скрипт, который делает это:
<?php
$progress = file_get_contents('/path/to/progress.txt');
header('Content-Type: application/json');
echo json_encode(['progress' => $progress]);
А затем получите прогресс, используя AJAX внутри функции setInterval:
$.get('/path/to/progress/json/page', function(data){
console.log(data);
});
Просто идея, может вам или не подойдет, но попробуйте!