ТАЙМ-аут в Ларавеле - PullRequest
       5

ТАЙМ-аут в Ларавеле

0 голосов
/ 21 февраля 2019

Итак, я должен прочитать файл Excel, в котором каждая строка содержит некоторые данные, которые я хочу записать в моей базе данных.Я передаю весь файл в laravel, он читает файл и форматирует его в массив, а затем я делаю новую вставку (или обновление) в моей базе данных.Дело в том, что входной файл Excel может содержать тысячи строк, и его завершение занимает некоторое время, давая в некоторых случаях timeout error.Когда я пытаюсь сделать это локально, я использую функцию set_time_limit(0);, поэтому тайм-аут не возникает, и он работает довольно хорошо.Но на удаленном сервере эта функция отключена по соображениям безопасности, и мой код падает из-за тайм-аута.Кто-нибудь может помочь в том, как решить эту проблему?Может быть, другая идея, как лучше решить эту проблему?

Ответы [ 2 ]

0 голосов
/ 22 февраля 2019

Вы можете позаботиться об этом, выполнив следующие действия:

1.Возьмите файл CSV и временно сохраните его в хранилище:

Вы можете сохранить большой CSV при загрузке пользователем.Если это что-то, что не загружено из внешнего интерфейса, просто убедитесь, что оно сохранено для обработки на следующем шаге.

2.Затем отправьте задание , которое можно поставить в очередь:

Вы можете создать задание, которое может обрабатывать это асинхронно.Вы можете использовать Supervisor для управления очередями, тайм-аутами и т. Д.

3.Используйте пакет, например thephpleague :

Используя этот пакет (или аналогичный), вы можете разделять записи на части или читать по одной за раз.Это действительно очень полезно, чтобы ограничить использование памяти.Кроме того, он имеет различные варианты методов для чтения данных из файлов.

4.Как только файл обработан, вы можете удалить его из временного хранилища:

Просто некоторые действия по очистке.

0 голосов
/ 21 февраля 2019

Хороший способ обработки задач, которые занимают много времени, - это использование так называемых заданий .

. Вы можете создать задание под названием ImportExcel и dispatch, когдакто-то отправляет вам файл.

Внимательно посмотрите на документы , у них есть несколько замечательных примеров того, как это сделать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...