Использование curl_init в Zend Application вызывает ошибку сеанса - PullRequest
0 голосов
/ 07 мая 2010

Я получаю странную ошибку в своем приложении Zend с этим фрагментом кода:

$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, 'www.xyz.com/ab.php');
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$data = curl_exec($curl);
curl_close($curl);      

if (!isset($location->country)) {
$location = new Zend_Session_Namespace('location');
$xml = new SimpleXMLElement($data);
$location->city=$xml->City;
}

Это ошибка, я получаю:

Fatal error: Uncaught exception 'Zend_Session_Exception' with message 'session has already been started by session.auto-start or session_start()

Когда я удаляю этот код, все работает нормально. Есть идеи ??

Редактировать: При дальнейшей отладке я обнаружил, что ошибка не из-за кода скручивания - она ​​появлялась позже, когда я назначал $ location-> city = $ xml-> City; Но когда я изменяю эту строку на $ location-> city = ''. $ Xml-> City. ''; Это начинает работать .......... это сводит меня с ума !!!!

Ответы [ 2 ]

1 голос
/ 07 мая 2010

Не совсем уверен, в чем ваша проблема, но я могу вам сказать, что Zend_Http_Client очень приятный и надежный и поддерживает несколько адаптеров, включая CURL.

Пример:

$http = new Zend_Http_Client(
  'url',
   $this->options
);
$response = $http->request();

http://framework.zend.com/manual/en/zend.http.html

0 голосов
/ 07 мая 2010

Ваш new Zend_Session_Namespace('location'); вызов попытается начать новый сеанс, но, очевидно, он уже был запущен без использования вызовов Zend_Session, и поэтому он вызывает исключение. Поэтому проверьте оставшуюся часть кода (и php.ini), чтобы выяснить, где вы начинаете этот сеанс (это может быть потому, что session.auto_start = 1 в php.ini или вызов session_start () где-то) и исправьте его, как видите подходит ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...