Как да паралелизираме php процеси
Разборът на 1 страница отнема 200-300 секунди. Трябва да анализирате 200 страници. Излиза много дълго време. Следователно въпросът е как да паралелизираме този бизнес. Така че, например, той веднага започва да анализира 5 страници
една нишка събира връзки, поставя ги в опашка.
Пуснете толкова манипулатори, колкото са ви необходими, всеки от които: 1. извлича един запис от опашка 2. събира информация 3. записва в база данни 4. връща към точка 1.
Ако този бизнес работи на една машина, тогава можете да използвате опашки от съобщения на SysV.
Бих направил следното: Първо съберете колекция от връзки в таблицата на базата данни за обработка от анализатора. След завършване - не чрезfile_get_html(), а чрез многонишков cURL, за да поиска съдържанието и да го запази в базата данни. След завършване - в цикъл, преминете през таблицата и на части от 20 записа изберете id на записите, които не са обработени от анализатора и поискайте друг URL за обработка със същия multicurl, например "/parser.php?id=1" . /parser.php?id=20" Всяка от 20-те заявки ще се изпълнява паралелно.
Най-вероятно проблемът ви не е в анализирането, а във връзката. Следователно multicurl ще ви помогне, тъй като това е като отваряне на страници едновременно в няколко раздела на браузъра и вашият код работи в един прозорец и в един раздел.
И между другото, поставете времеви отпечатъци в кода си за профилиране и време за всяка операция. и със сигурност ще разберете кое отне повече време.