Ответ 1
Я столкнулся с той же проблемой:
- Из оболочки, завиток работал.
- От оболочки работает PHP script.
- PHP не смог выполнить ping-сайт.
- Конфигурация DNS была правильной.
После перезагрузки Apache он работал. Настолько странно.
Я написал код, который заполняет форму входа и отправляет ее через метод post. Как:
$config = array(
'adapter' => 'Zend_Http_Client_Adapter_Curl',
);
$this->siteObj = new Zend_Http_Client('http://example.com', $config);
$this->siteObj->setCookieJar();
$this->siteObj->setUri('http://example.com/login');
$this->siteObj->setParameterPost( 'data[User][name]', 'user' );
$this->siteObj->setParameterPost( 'data[User][password]', 'password' );
$response = $this->siteObj->request('POST');
его работа прекрасна, но иногда эта ошибка возникает:
Error in cURL request: name lookup timed out
Error: An Internal Error Has Occurred.
В чем проблема? что я могу сделать для его решения?
Я столкнулся с той же проблемой:
После перезагрузки Apache он работал. Настолько странно.
Это может быть проблема timeout. Попробуйте настроить таймаут соединения:
$config = array(
'adapter' => 'Zend_Http_Client_Adapter_Curl',
'timeout' => 100
);
вы также можете установить одиночные завитки:
$config = array(
'adapter' => 'Zend_Http_Client_Adapter_Curl',
'curloptions' => array(
CURLOPT_USERAGENT => 'Zend_Curl_Adapter',
CURLOPT_HEADER => 0,
CURLOPT_VERBOSE => 0,
CURLOPT_RETURNTRANSFER => 1,
CURLOPT_TIMEOUT => 10,
CURLOPT_SSL_VERIFYPEER => false,
),
);
Если вы обнаружите, что это проблема с тайм-аутом, я бы не предложил слишком сильно увеличить параметр таймаута, а скорее сделать цикл для с количеством попыток.
Это означает, что ваш DNS-сервер не смог своевременно вернуть ответ. Проверьте конфигурацию DNS (например,/etc/resolv.conf в Linux) и убедитесь, что они живы и функциональны. Также попробуйте выполнить ping-хост в URL-адресе с одного и того же сегмента, чтобы получить представление о том, существует ли проблема только в PHP или в любом приложении, запущенном на сервере (скорее).