Периодически мне нужно совершать запись из одной таблицы MYSQL в другую.
Причем посредством PHP - так как нужно поля таблицы разбить на новые и в таком виде залить в другую таблицу.
Всё бы хорошо, но ни
set_time_limit(0) не помогает, ни включение в цикл
sleep() - Ошибка 504 через некоторое время выполнения.
Помогает только разбитие работы на несколько частей с помощью
BETWEEN 450000 AND 600000. Вот так сижу, дожидаюсь завершения работы первой части, меняю ручками значения в
BETWEEN и делаю следующую. Грустно это. :(
Код такой:
//тут запрос к базе данных
$count=0;
foreach($list as $row) {
$count++;
//тут логика перестроения полей таблицы и запись очередной строки в новую таблицу
if(($count%30000)==0)
{
sleep(30);
}
}
То есть, убирал из запроса
BETWEEN и вставлял паузу, но смысла не было. Сервер не "отдыхал". Причем, как понятно из приведенного диапазона
BETWEEN, без проблем выдерживаются 150 тысяч итераций. А sleep я ставлю только на каждый 30 тысяч. Менял значения, в том числе и количество секунд - всё без толку.