LINUX.ORG.RU
ФорумAdmin

error(name lookup timed out) при выполнении curl


0

0

Приветствую вас.

Такая проблема сабжевая.

На хостинговом сервере один клиентский проект использует 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 через скрипты РНР.


насколько я помню нужно не libcurl.so искать, а curl.so. и загрузка php-модуля может быть прописана не только в php.ini, но и где-нибудь в /etc/php/extensions.ini. А искать проблему imho нужно либо в url-е который скрипт пытается открыть при помощи curl-а либо в resolver/dns.

cobold ★★★★★
()
Ответ на: комментарий от cobold

Файла curl.so нет.

Есть 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()}
...и далее...

nslookup'ом тоже показывает норму.

----

Версия 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 libz

PHP:

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 Technologies

php-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

Gular
() автор топика

Решить удалось при помощи изменения кода в скрипте.В одной из строк был код
$timeout=10;

Изменил на бОльшее значение
$timeout=120;

Скрипт вроде работает. Но, может есть другое решение?
Подскажите пожалуйста.

Gular
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.