Всем привет, никогда не сталкивался с выводом больших данных и их парсингом, только начинаю в программировании
Написал скрипт на php
Делаю запрос с выборкой данных из БД, с сохранением в массив(кстати тоже вопрос, если записей в таблице очень много больше 1 млн, правильно ли это?)
Дальше через foreach бегаю по массиву ищу поле и подставляю его в curl() запрос,чтобы спарсить данные, декодирую через json_decode, в этом массиве снова ищу данные foreach и обновляю в БД
Запустил скрипт за 15 мин , перемолол 4000 строк
В БД таких строк 1 620 000
Посчитал чтобы все их обработать займет 72 дня (по 4 сек на один запрос)
Как ускорить этот процесс и уменьшить время?Использовать потоки(А есть ли они в php)? Или использовать array_chunk и раскидывать по серверам?
const CHUNK = 100000;
const SERVER_NUM = 10;
$maxId = $db->fetchVal('SELECT o_id FROM organizations ORDER BY o_id DESC LIMIT 1');
$chunkOrder = 0;
$from = 0;
$to = CHUNK;
$SERVER_ID = 1;
do{
$chunkOrder++;
if ($SERVER_ID !== $chunkOrder % SERVER_NUM){
continue;
};
$org_twitter = $db->fetchAll('SELECT * FROM organizations where o_id >= :from and o_id < :to', ['from'=>$from, 'to'=> $to]);
$from = $to;
$to += CHUNK;
foreach (){}
}while($from <= $maxId)