mysql — проблема максимального времени выполнения php для массовой загрузки

У меня проблема с моей функцией массовой загрузки. Я пытаюсь загрузить 16000 записей в файл CSV. Ниже мой код, я использую фреймворк yii. но проблема в том, что я получаю php максимальное время выполнения.

Это пример записи

Gella,Rafalla,N/A,N/A,0 Pala da vences,13140,MIRAMAS,1,1926-04-25,N/A,LE TRNT BAT I 13,N/A,CEJEAN GINO,6,N/A,N/A,N/A,N/A

и есть 16 000 записей как таковых.

if (($handle = fopen($file, "r")) !== FALSE) {
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
// save the record after few validation.
}
}

как вы видите, я просматриваю весь файл за один раз. Могу ли я узнать, в чем проблема, чтобы получить максимальную ошибку времени выполнения?

на данный момент, на обработку 2000 записей у меня уходит 6 минут. так что это займет у меня Примерно 48 минут для завершения загрузки этого файла сохраняя записи.

Цените любые предложения, чтобы написать это лучше.

Вот полная логика. сохранил это здесь как его слишком долго. https://3v4l.org/QZeg2

вот таблицы базы данных, которые я использую для проверки внутри цикла while.

http://sqlfiddle.com/#!9/1a579/3

Существует таблица пользователя, таблица пользовательских полей и таблица пользовательских значений. Нет данных Представления или Триггеры или Процедуры.

0

Решение

Причиной проблемы с производительностью является проверка и сохранение, как указано в комментариях.

Но если вы делаете одноразовый ввоз здесь и ваша проблема на самом деле не производительность, а максимальное время исполнения, Вы можете попробовать CLI.

Если у вас уже есть код в yii, вы можете сделать из него консольное приложение yii:

Yii 1.1:
http://www.yiiframework.com/doc/guide/1.1/en/topics.console

Yii 2:
http://www.yiiframework.com/doc-2.0/guide-tutorial-console.html

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]