Приветствую вас.Такая проблема.
На хостинговом сервере один клиентский проект использует curl. И при выполнении скриптов валятся такие ошибки:
23:24:14 #0 of 8948 - error(Connection time-out after 90006 ms)
23:24:14 #1 of 8948 - error(name lookup timed out)
23:24:14 #2 of 8948 - error(name lookup timed out)
23:24:14 #3 of 8948 - error(name lookup timed out)
23:24:14 #4 of 8948 - error(name lookup timed out)
23:24:14 #5 of 8948 - error(name lookup timed out)
23:24:14 #6 of 8948 - error(name lookup timed out)
23:24:14 #7 of 8948 - error(name lookup timed out)
23:24:14 #8 of 8948 - error(name lookup timed out)
23:24:14 #9 of 8948 - error(name lookup timed out)Как изменить? Такое ощущение, что есть лимиты на запросы curl'a.
РНР собран с поддержкой curl:
php -i | grep curl
Configure Command => './configure' '--with-apxs2' '--with-curl=/usr/local/lib' '--with-gd' '--enable-gd-native-ttf' '--with-ttf' '--with-gettext' '--with-jpeg-dir=/usr/local/lib' '--with-freetype-dir=/usr/local/lib' '--with-kerberos' '--with-openssl' '--with-mcrypt' '--with-mhash' '--with-mysql=/usr' '--with-mysqli=/usr/bin/mysql_config' '--with-pear' '--with-png-dir=/usr/local/lib' '--with-zlib' '--with-zlib-dir=/usr/local/lib' '--enable-zip' '--with-iconv=/usr/local' '--enable-bcmath' '--enable-calendar' '--enable-ftp' '--enable-magic-quotes' '--enable-sockets' '--enable-mbstring' curl cURL Information => libcurl/7.17.1 OpenSSL/0.9.7a zlib/1.2.3 libidn/0.5.6
В /etc/php.ini строки extension=libcurl.so нету. Но и не нужна наверно она, потому как после ее дописания, перезапуска и ввода вышенаписанной коанды он ругается, что не может загрузить ./libcurl.so.
Подскажите, где смотреть? Спасибо.
curl через скрипты РНР.
И что такие ошибки происходят при обращении через curl к _любому_ сайту(например к google) или все-таки только к определенному? что если из консоли на сервере запустить curl с тем же адресом? Локализуйте проблему.
>И что такие ошибки происходят при обращении через curl к _любому_ сайту(например
>к google) или все-таки только к определенному? что если из консоли
>на сервере запустить curl с тем же адресом? Локализуйте проблему.Курл оттуда в Гугл работает:
curl www.google.ru
<html><head><meta http-equiv="content-type" content="text/html; charset=windows-1251"><title>Google</title><style>body,td,a,p,.h{font-family:""}.h{font-size:20px}.h{color:#3366cc}.q{color:#00c}.ts td{padding:0}.ts{border-collapse:collapse}</style><script>window.google={kEI:"EAA2R9CDPIS0sAKDm8CuCw",kEXPI:"0",kHL:"ru"};function sf(){document.f.q.focus()}
</script></head><body bgcolor=#ffffff text=#000000 link=#0000cc vlink=#551a8b alink=#ff0000 onload="sf();if(document.images){new Image().src='/images/nav_logo3.png'}"Ошибки при работе со скриптами, которые хранятся там же.
Не совсем тогда понимаю в чем у вас затруднение. Вы проверили что сам curl работает. Значит проблема в url, которые ему скармливают пыховые скрипты. Ну так посмотрите что именно они запрашивают. Может у вас что-то в сети не корректно настроенно, а может на целевых хостах проблемы. Всегда старайтесь сначала максимально локализовать проблему, а уже потом ее решать. А то может получится что вы будете думать об обновлении curl или php, а проблема будет в DNS сервере или роутинге.
>Не совсем тогда понимаю в чем у вас затруднение. Вы проверили что
>сам curl работает. Значит проблема в url, которые ему скармливают пыховые
>скрипты. Ну так посмотрите что именно они запрашивают. Может у вас
>что-то в сети не корректно настроенно, а может на целевых хостах
>проблемы. Всегда старайтесь сначала максимально локализовать проблему, а уже потом ее
>решать. А то может получится что вы будете думать об обновлении
>curl или php, а проблема будет в DNS сервере или роутинге.
>То есть, возможна проблема в DNS?
nslookup'ом показывает норму.
nslookup agetofu.info
Server: 58.65.238.10
Address: 58.65.238.10#53Non-authoritative answer:
Name: agetofu.info
Address: 219.94.129.21----
libcurl.so есть, который, собственно, и находится в заявленной директории /usr/local/lib :
ls -l /usr/local/lib/libcu*
-rw-r--r-- 1 root root 2502862 Nov 9 01:27 /usr/local/lib/libcurl.a
-rwxr-xr-x 1 root root 929 Nov 9 01:27 /usr/local/lib/libcurl.la
lrwxrwxrwx 1 root root 16 Nov 9 01:27 /usr/local/lib/libcurl.so -> libcurl.so.4.0.1
lrwxrwxrwx 1 root root 16 Nov 9 01:27 /usr/local/lib/libcurl.so.4 -> libcurl.so.4.0.1
-rwxr-xr-x 1 root root 1418153 Sep 20 17:44 /usr/local/lib/libcurl.so.4.0.0
-rwxr-xr-x 1 root root 1436716 Nov 9 01:27 /usr/local/lib/libcurl.so.4.0.1Если в etc/php.ini добавить строку extension=libcurl.so и перезагрузить Apache, то он запустится, записав в лог ошибку:
PHP Warning: PHP Startup: Unable to load dynamic library './libcurl.so' - ./libcurl.so: cannot open shared object file: No such file or directory in Unknown on line 0
curl к, например, Гуглу непосредственно с сервера работает:
curl -L www.google.ru
<html><head><meta http-equiv="content-type" content="text/html; charset=windows-1251"><title>Google</title><style>body,td,a,p,.h{font-family:""
}.h{font-size:20px}.h{color:#3366cc}.q{color:#00c}.ts td{padding:0}.ts{border-collapse:collapse}</style><script>window.google={kEI:"O
as2R6DtIJ2OsALc1rikCw",kEXPI:"0",kHL:"ru"};function sf(){document.f.q.focus()}
...и далее...----
Версия curl:
curl --version
curl 7.17.1 (i686-pc-linux-gnu) libcurl/7.17.1 OpenSSL/0.9.7a zlib/1.2.3 libidn/0.5.6
Protocols: tftp ftp telnet dict ldap http https ftps
Features: IDN IPv6 Largefile NTLM SSL libzPHP:
php --version
PHP 5.2.4 (cli) (built: Nov 9 2007 01:37:44)
Copyright (c) 1997-2007 The PHP Group
Zend Engine v2.2.0, Copyright (c) 1998-2007 Zend Technologiesphp-cgi --version
PHP 5.1.6 (cgi-fcgi) (built: Jun 17 2007 11:40:59)
Copyright (c) 1997-2006 The PHP Group
Zend Engine v2.1.0, Copyright (c) 1998-2006 Zend Technologies
>Не совсем тогда понимаю в чем у вас затруднение. Вы проверили что
>сам curl работает. Значит проблема в url, которые ему скармливают пыховые
>скрипты. Ну так посмотрите что именно они запрашивают. Может у вас
>что-то в сети не корректно настроенно, а может на целевых хостах
>проблемы. Всегда старайтесь сначала максимально локализовать проблему, а уже потом ее
>решать. А то может получится что вы будете думать об обновлении
>curl или php, а проблема будет в DNS сервере или роутинге.
>Добавка.
--------На данном хостинге есть некий скрипт на РНР, который, как я понимаю, запрашивает некоторые адреса. В частности, например, вот кусок вывода этого скрипта (команду php /path/to/my_script.php):
http://cgi38.plala.or.jp/yukkyday/bbs/wf_regi.cgi
http://cgi39.plala.or.jp/REXER/keiji/light.cgi
15:39:29 #10 of 8948 - error(name lookup timed out)
15:39:29 #11 of 8948 - error(name lookup timed out)
15:39:29 #12 of 8948 - error(name lookup timed out)
15:39:29 #13 of 8948 - error(name lookup timed out)
15:39:29 #14 of 8948 - error(name lookup timed out)
15:39:29 #15 of 8948 - error(name lookup timed out)
15:39:29 #16 of 8948 - error(name lookup timed out)
15:39:29 #17 of 8948 - error(name lookup timed out)
15:39:29 #18 of 8948 - error(name lookup timed out)
15:39:29 #19 of 8948 - error(name lookup timed out)
http://cgi39.plala.or.jp/~alkaloid/fileup/joyful.cgi
http://cgi39.plala.or.jp/~hot-bob/001/joyful.cgi
http://cgi39.plala.or.jp/~tricker/cbbs/srch.cgiТо есть, похоже, что он не может заполучить страницу с cgi.
Это связано с временем curl TIMEOUT, или дело DNS? Извините, может я плохо вопрос понимаю. Надо разобраться. Я уже документацию по curl почитал. :)
В общем, curl с сервера на, например, ту же light.cgi работает, а в скрипте, похоже, нет. Наверно дело в коде, да? :)
Решить удалось при помощи изменения кода в скрипте.В одной из строк был код
$timeout=10;Изменил на бОльшее значение
$timeout=120;Скрипт вроде работает. Но, может есть другое решение?
>Скрипт вроде работает. Но, может есть другое решение?Настроить DNS так, чтобы ответ гарантировано возвращался быстрее чем за 10 секунд(если в $timeout конечно не милисекунды). Однако как это делать и какие плюсы и минусы для разных вариантов это уже слишком обширная тема :)
>>Скрипт вроде работает. Но, может есть другое решение?
>
>Настроить DNS так, чтобы ответ гарантировано возвращался быстрее чем за 10 секунд(если
>в $timeout конечно не милисекунды). Однако как это делать и какие
>плюсы и минусы для разных вариантов это уже слишком обширная тема
>:)Угу, DNS, видимо, слишком долго разрешает имя. Потому что на другом сервере такого не возникает.
>>>Скрипт вроде работает. Но, может есть другое решение?
>>
>>Настроить DNS так, чтобы ответ гарантировано возвращался быстрее чем за 10 секунд(если
>>в $timeout конечно не милисекунды). Однако как это делать и какие
>>плюсы и минусы для разных вариантов это уже слишком обширная тема
>>:)
> Угу, DNS, видимо, слишком долго разрешает имя. Потому что на другом сервере
> такого не возникает.да ослу понятно, что нет ответа за 10секунд. у меня та же проблема с фидбьорнер