Почему когда работает curl, apache блокирует доступ к хосту?
Как вариант: если у вас php-сессии хранятся в файлах и в запросах открывается сессия, то проблема может быть в этом. 
Например один процесс апача (тот который использует curl) открывает сессию, затем начинается парсинг. Сессия открыта, файл с ней заблокирован. Вы шлете другой запрос к своему серверу, где тоже открывается сессия, но она не может открыться т.к. файл заблокирован другим процессом, поэтому этот процесс будет висеть, пока процесс-блокировщик не закончит парсить страницу и не закроет сессию.
Есть простое решение - использовать очереди (rabbitmq/zeromq) и повесить выполнение грабера на cli (+ можно прописать в супервизоре правило, что бы тот поднимал обработчик очереди если тот вдруг упадет).