Костыль с многопоточностью на php
а где там кастыль?
у вас так или иначе должна быть очередь. Использовать rabbitmq, zeromq, reddis или просто в php хранить массив задач (в stl есть очереди) - решать вам.
Так же у вас должен быть один воркер для скачивания информации (возможно не один) в несколько потоков (multi curl) и список проексей если он вам нужен. Если у вас есть список проксей - то имеет смысл так же в отдельном воркере (или периодически в промежутках) проверять статус проксей.
Так же вам нужны воркеры которые будут парсить результат запросов.
Можно вооружиться pthreads и разнести все воркеры по потокам и сделать доступ к очереди потоко безопасным. Если в качестве очереди используется кролик, то тогда у каждого коркера ссылка на свою очередь задач. В этом случае проще скейлить парсер.