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