Единственный способ не заставлять клиента ждать, пока сервер завершит обработку, состоит в том, чтобы обработка выполнялась в другом процессе после отправки вашего ответа.
INSERT DELAYED
- быстрый и грязный способ сделать это. Строки базы данных для вставки будут поставлены в очередь MySQL и вставлены позже. Это означает, что нет способа обнаружить или обработать ошибку значения, потому что после execute()
строка фактически не была вставлена. Цикл по csv и выдача запросов все еще должны выполняться, пока клиент ждет.
Если это все еще слишком долго, вам нужно будет создать или использовать какую-нибудь очередь или очередь задач. В этой схеме запрос принимается и затем передается в длительный процесс или помещается в каталог, и веб-ответ отправляется немедленно. Между тем, другой процесс, выполняющийся на сервере, собирает запросы, обрабатывает их и затем записывает состояние где-то (например, в таблицу базы данных). Должна быть еще одна страница, на которую пользователь может перейти, чтобы отслеживать состояние своей задачи.