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