Почему виснет? Потому что если прокси нерабочая в данный момент, то нет команды не курлить дальше и разорвать соединение, каждую проксю ПЕРЕД использованием надо проверять на рабочесть. По идее
2 Pashkela
нах проверять перед этим ? просто поставить CURLOPT_TIMEOUT со значением допустим 30 и если ответа не последовало, одевать следующую проксю и выполнять запрос повторно ..