Задать вопрос
ubernoob
@ubernoob

Скрипт добавляет записи в БД после завершения?

Скрипт в цикле добавлял записи в БД.
Должен был добавить 100 тыс. После 3 тыс. сервер выдал ошибку 500 (время скрипта истекло) но отойдя по своим делам минут на 10 и обновив страницу с БД я увидел что там 40 тыс. записей и они продолжают прибывать (догадываюсь что до 100 тыс.).
Вопрос: как это работает и почему? Скрипт же завершиться вроде должен был?
  • Вопрос задан
  • 178 просмотров
Подписаться 2 Оценить Комментировать
Решения вопроса 3
Возможно кешированте запроса но мало вероятно. 100т это очень мало. Если скрипт не висит в процессах то ни чего не добавляется. У меня было так когда я добавлял 2мил записей . А то что прибавляеться это возможно тупит phpmyadmin проверти count(*) в php . Такое часто бывает что при большом обьеме phpmyadmin не корректно считает строки и выдает то больше то меньше число и можно подумать что ваш скрипт выполняеться.
Ответ написан
Комментировать
@AlikDex
Если коротко, то сервер разрывает соединение в после превышения лимита времени (настраивается).
Также настраивается параметр завершать скрипт или нет после разрыва коннекта. Но не помню где точно(толи апач, толи пхп), гугол в помощь.
Рецепт без колупания настроек:
используйте 81 порт. например: mysite.com:81/script.php
Ответ написан
Комментировать
zo0m
@zo0m
full stack developer
Сценарий "bulk" операции:
- Подготавливаете данные
- Открываете соединение с базой
- Открываете транзакцию
- Выполняете всю пачку Insert-ов
- Закрываете транзакцию

Если операция прервана между открытием и закрытием транзакции, то изменения откатятся.
Раз на 100 тыс. записей у вас виснет скрипт, то могу предположить, что вы закрываете\открываете транзакцию, на каждый insert - что очень неэкономично.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы