У меня есть простой скрипт, который извлекает около 100 миллионов результатов, по 1 миллиону за раз с удаленного сервера MySQL, и обновляет мою локальную базу данных.Удаленный сервер не находится под моим контролем, поэтому выполнить автоматическую настройку главного / подчиненного устройства невозможно.Для нормального выполнения требуется несколько часов, но я понял, что часть кода, которая извлекает результаты с удаленного сервера, и часть кода, которая обновляет локальные записи, занимают примерно одинаковое количество времени для выполнения.Таким образом, теоретически я мог бы сократить время выполнения почти вдвое, если я получу следующий пакет строк с удаленного сервера во время обновления локальных записей.Я видел пример кода для параллельных запросов к базе данных в PHP (например, вопрос 322275 ), но я не могу придумать, как заставить его работать с циклом обновления foreach в моем скрипте.Возможно ли это в PHP или мне лучше сделать это на другом языке, например Python или Ruby (хотя у меня нет опыта работы с ними)?
Редактировать : Также удаленный сервернаходится на полпути вокруг света, поэтому задержка сети довольно высока.
Пример кода:
for ($i = 0; $i < 100; $i++)
{
$min = $i * LIMIT;
$max = ($i + 1) * LIMIT;
$updates = $db_remote->fetchAll("SELECT * FROM table_name WHERE content_id >= $min AND content_id < $max"); // Pull 1 million results from the remote SQL server
foreach ($updates as $u)
{
$db_local->update("UPDATE table_name SET ... WHERE content_id = $u['content_id'] LIMIT 1"); // Update each of the local entries
}
}