Помогите разобратся с curl

A
На сайте с 19.09.2011
Offline
48
1158

Проблемка такая, хочу воспользоватся апи сервисом http://recipdonor.com, ихние скрипты на локальном сервере (Денвер) исполняются нормально. Закидываю на хостинг - тишина.

Вот кусок скрипта

<?php

$ch = curl_init("http://recipdonor.com:998/api/session/new");

$in = curl_exec($ch);

echo $in;

curl_close($ch);

?>

Он локально возвращает ошибку (просто нужно передавать пароли), но видно что сервер отвечает. На хостинге - тупо долго грузится и все. Я так понимаю проблема с 998 портом.

Замучился уже, бъюсь не один день. Может кто что подскажет. Заранее спасибо.

seosniks
На сайте с 13.08.2007
Offline
389
#1
alextr:
Проблемка такая, хочу воспользоватся апи сервисом http://recipdonor.com, ихние скрипты на локальном сервере (Денвер) исполняются нормально. Закидываю на хостинг - тишина.
Вот кусок скрипта
<?php



?>
Он локально возвращает ошибку (просто нужно передавать пароли), но видно что сервер отвечает. На хостинге - тупо долго грузится и все. Я так понимаю проблема с 998 портом.
Замучился уже, бъюсь не один день. Может кто что подскажет. Заранее спасибо.

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

и еще поглядите что отдает curl_setopt($ch, CURLOPT_HEADER, 1);


// Report all PHP errors (see changelog)
error_reporting(E_ALL);
// Report all PHP errors
ini_set('error_reporting', E_ALL);


<?php
// инициализация сеанса
$ch = curl_init();

// установка URL и других необходимых параметров
curl_setopt($ch, CURLOPT_URL, "http://www.example.com/");
curl_setopt($ch, CURLOPT_HEADER, 0);

// загрузка страницы и выдача её браузеру
curl_exec($ch);

// завершение сеанса и освобождение ресурсов
curl_close($ch);
?>

$ch = curl_init("http://recipdonor.com:998/api/session/new");

curl_setopt($ch, CURLOPT_POST,1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION ,1);
curl_setopt($ch, CURLOPT_HEADER,0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER ,1);
echo $result = curl_exec($ch);
curl_close($ch);
ДП
На сайте с 23.11.2009
Offline
203
#2

Есть еще опция CURLOPT_VERBOSE - тогда курл будет выдавать информацию, что он отправляет-полчает, заголовки там.

A
На сайте с 19.09.2011
Offline
48
#3

Ни один скрипт ни чего не отдал, при обращении на 998 порт грузятся около 5 минут, и возвращают пустоту, тот скрипт что обращается к http://www.example.com/ (без порта), грузится быстро (несколько секунд), но тоже в ответ пусто.

Такое впичитление - сервер не отвечает, когда обращение идет на 998 порт.

Хотя локально ответ идет сразу.

---------- Post added 10-02-2012 at 18:28 ----------

Есть еще опция CURLOPT_VERBOSE - тогда курл будет выдавать информацию, что он отправляет-полчает, заголовки там.

Если я правильно понял нужно добавить

curl_setopt($ch, CURLOPT_VERBOSE, 1);

Добавил, ситуация не изменилась. На екране чистый лист. Такое впечитление что данные с хоста не отправляются на 998 порт или не принимаются потом, или то и другое вместе. А как проверить не знаю. Общался с тех поддержкой хоста написали -

Порт 998 открыт на сервер для входящих подключений. Но как и было сказано, это не имеет значения, т.к. в вашем скрипте происходит удаленное подключение на 998 порт удаленного сервера. Возможно поддержка recipdonor может показать как протестировать работу скрипта ?

[umka]
На сайте с 25.05.2008
Offline
456
#4

Порт задаётся отдельной опцией

curl_setopt($ch, CURLOPT_PORT, 998);

... это во-первых.

Во-вторых, проверьте, что пишут в curl_errno($ch) и в curl_error($ch) после curl_exec($ch).

if (curl_errno($ch)) {
echo "CURL error: ".curl_error($ch)."\n";
}
Лог в помощь!
A
На сайте с 19.09.2011
Offline
48
#5
'[umka:
;10030847']Порт задаётся отдельной опцией
curl_setopt($ch, CURLOPT_PORT, 998);
... это во-первых.
Во-вторых, проверьте, что пишут в curl_errno($ch) и в curl_error($ch) после curl_exec($ch).

if (curl_errno($ch)) {

echo "CURL error: ".curl_error($ch)."\n";
}

После этого есть ответ: CURL error: couldn't connect to host

Это я в принцыпе и предполагал - интуицией :).

Дальше что мне делать. 😕

[umka]
На сайте с 25.05.2008
Offline
456
#6
alextr:
После этого есть ответ: CURL error: couldn't connect to host
Это я в принцыпе и предполагал - интуицией :).
Дальше что мне делать. 😕

Значит, либо на вашем сервере закрыта возможность соединения на целевой хост/порт, либо на целевом хосте.

Что дальше делать, сначала выяснять точную причину.

RDS bar
На сайте с 06.04.2010
Offline
98
#7
alextr:

Порт 998 открыт на сервер для входящих подключений. Но как и было сказано, это не имеет значения, т.к. в вашем скрипте происходит удаленное подключение на 998 порт удаленного сервера. Возможно поддержка recipdonor может показать как протестировать работу скрипта ?

Сообщите, пожалуйста, на каком хостинге скрипт отрабатывает с ошибкой.

Вышлите в личку или на адрес support@recipdnor.com логин и пароль для ФТП доступа к папке, из которой скрипт отрабатывает с ошибкой.

Постараемся найти причину и устранить эту проблему.

RDS плагин для FF (Быстрый анализ seo показателей сайта) - http://www.recipdonor.com/bar/ (http://www.recipdonor.com/bar/) RDS API - десктопная программа для анализа seo показателей http://www.recipdonor.com/rds-api (http://www.recipdonor.com/rds-api)
A
На сайте с 19.09.2011
Offline
48
#8

Огромное спасибо всем кто отвечал, проблему буду решать через support@recipdnor.com , что выйдет позже отпишусь.

I
На сайте с 23.12.2010
Offline
25
#9

telnet recipdonor.com 998

A
На сайте с 19.09.2011
Offline
48
#10

Броблема решилась, порт был заблокирован хостером.

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

Так как порт 998, по которому пытается "выйти" скрипт был заблокирован и поэтому появлялась ошибка:

curl_error: connect() timed out!

http_code: 0

Всем спасибо за участие в решении проблемы!

Проблема решена. Тему можно закрыть

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий