Master-X
Регистрация
|
Вход
Форум
|
Новости
|
Статьи
Главная
»
Форум
»
Программинг, Скрипты, Софт, Сервисы
»
Тема:
Php5 - 500 ошибка
Новая тема
Ответить
цитата
19/01/09 в 17:57
Sterx
скрипт - прокси чекер, работает через CURL
php5 подключен как модуль cgi
CURL затыкается, много чего пробовал, если без прокси в целом все работает.
подключаю через крон:
Цитата:
PHP Fatal error: Uncaught exception 'Exception' with message 'CURL ERROR: couldn't connect to host' in /home/i/..../curl.php:338
Stack trace:
#0 /home/i/..../curl.php(260): Curl->mr_after_exec(false)
#1 /home/i/..../library.php(25): Curl->exec()
#2 /home/i/..../check.php(15): page_connect(Array)
#3 {main}
thrown in /home/i/..../curl.php on line 338
Status: 500 Internal Server Error
X-Powered-By: PHP/5.2.5
Content-type: text/html
где копать?
цитата
19/01/09 в 18:14
MoriArty
1. не та версия екстеншина CURL
2. попробуй CURL для "разрешённых" портов на твоём хостинге (хотя, если исп. трассировка соединений, это ничего не покажет)
3. что говорит суппорт? ;)
цитата
19/01/09 в 18:16
Sterx
1. не понял
2. дык часть отрабатывает - не отрабатывает на прокси у которых затык
3. саппорт еще не спрашивал
цитата
19/01/09 в 19:31
MoriArty
ну
CURL ERROR: couldn't connect to host
, а вот почему он не может приконнектиться - хз, шелл на хостинг есть? если просто в шелле telnet IP PORT "проблемной" прокси, на который вылетает... и потом уже суппорт напрягать что б разрешили исходящие коннекты на нужные порты (эт если телнет НЕотработает)
а 500 ошибка, здесь исключительно из-за того, что
Uncaught exception
, то есть, когда CURL не может чего-то, то он бросает ексепшн, который вы в скрипте не "ловите".
имхо нужно проверять телнетом, и от результатов уже плясать
зы: отпишитесь плиз потом о решении проблемы, ок?
цитата
19/01/09 в 19:35
Sterx
сейчас на денвере попробую
цитата
19/01/09 в 19:53
MoriArty
в общем, если я правильно понял проблему и окружение выполнения(например, если на хостинге всё разрешено), кастомный враппер (класс Curl) CURL бросает этот эксепшн, ессно, когда он не может приконнектиться к проксе, то есть она дохлая прокся и в блек-лист её...
зы: реализация Curl ваша? посмотрите просто инфу/наследуйте от этого класса, если нет встроенных дебаговых ф-ций и var_dump($e) - то есть того ексепшина, который выбрасывает этот класс
зы: хотя, навряд ли она будет отличаться от: CURL ERROR: couldn't connect to host' in /home/i/..../curl.php:338
цитата
19/01/09 в 19:55
Sterx
Код:
if(curl_errno($this->_ch))
{
throw new Exception("CURL ERROR: ".curl_error($this->_ch),curl_errno($this->_ch));
}
экцепшен нигде в коде не обрабатывается
цитата
19/01/09 в 20:36
MoriArty
int curl_errno ( resource $ch )
Возвращает код ошибки для последней операции cURL с дескриптором ch, или 0 (ноль), если ошибки не было.
то есть, этот класс просто проверяет результат выполнения последней CURL - ф-ции. Что это за последняя ф-ция однозначно сказать невозможно, так как вы юзаете враппер (согласно лога стека, ошибка может быть или в curl_exec() или в обёртке Curl->mr_after_exec() ), хотя, скорее-всего, что имплементация Curl->exec() просто не коннектится к проксе.
В общем, попробуйте telnet на эту проблемную проксю из шелла на хостинге. Если не коннектится - откажитесь от этого класса (Curl) и просто юзайте и обрабатуйте значения возвращаемые ф-циями CURL напрямую.
теги:
CURL:
http://ua2.php.net/manual/ru/book.curl.php
CURL-Wrapper с "нормальной документаций" (PEAR):
http://pear.php.net/package/Net_Curl
цитата
19/01/09 в 21:10
Sterx
отказался от класса при проверке прокси.
как я понял - виртуал рвал соединение, закрывал - не важно, если скрипт сам этого не делал.
сейчас поставил таймаут 10 секунд, вроде чекает, процент выхода плохих больше конечно, но сцуко виртуал
цитата
20/01/09 в 02:33
xreload
Нечего само по себе разорвать не может, либо ты не разобрался с таймаутами в CURL, либо из крона запускал скрипт в стиле wget /bla/bla/myscript.php
Новая тема
Ответить
Эта страница в полной версии