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


Эта страница в полной версии