Как обновить несколько строк в php l oop, который выбрасывает время ожидания 504 - PullRequest
0 голосов
/ 14 января 2020

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

Я написал скрипт PHP, который просматривает каждую запись и определяет, есть ли у этого клиента дубликаты в базе данных или нет. Если встречается несколько случаев, я обновляю все другие таблицы, связанные с этим клиентом, и обновляю их связанный идентификатор клиента до последней версии этого клиента.

Проблема, с которой я сталкиваюсь, заключается в том, что этот скрипт запускается путем загрузки переноса. php в браузере занимает столько времени, что при его запуске я получаю тайм-аут 504, даже если я запускаю запрос имен клиентов, начинающихся с 'A'. Затем измените на «B» и запустите скрипт, затем «C» и запустите скрипт et c ... (что в любом случае заняло бы целую вечность).

Итак, мой вопрос: как можно ли выполнить около 120 000 запросов UPDATE либо внутри циклов PHP на странице переноса. php и избежать тайм-аута 504 (в настоящее время установлено ограничение 5 минут), либо распечатать запросы и запустить их через PHPMyAdmin?

Я распечатал (фрагмент):

BEGIN;
UPDATE renewal_reminder SET renewalid='49884' WHERE renewalid='43239';
UPDATE renewal_note SET renewalid='49884' WHERE renewalid='43239';
UPDATE renewal_request SET renewalid='49884' WHERE renewalid='43239';
UPDATE renewal_timeline SET renewalid='49884' WHERE renewalid='43239';
COMMIT;

Но это все равно убивает PHPMyAdmin и возвращает ошибку.

Можно ли использовать этот большой список ОБНОВЛЕНИЙ в PHPMyAdmin для запуска сценарий, может быть, в пакетном режиме?

1 Ответ

0 голосов
/ 15 января 2020

ОБНОВЛЕНИЕ

Ну ...

В итоге я проиндексировал идентификатор клиента в каждой таблице, которая ссылается на него, и я запустил свой оригинальный сценарий с запросами UPDATE, и он сделал это примерно за 5 секунд ...

Без необходимости вставлять, а затем скопировать данные.

Так что для тех, у кого такая же проблема, попробуйте индексировать некоторые столбцы в вашей таблице, чтобы ваш скрипт мог быстро ссылаться на них.

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