cURL php не работает с большинством сайтов

И всё прочее, что касается HTML
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Аватара пользователя
freeman_tnu
мл. сержант
Сообщения: 104
Зарегистрирован: 2007-09-13 12:17:00
Откуда: Kiev
Контактная информация:

cURL php не работает с большинством сайтов

Непрочитанное сообщение freeman_tnu » 2013-09-04 13:14:19

FreeBSD 8.3 amd64

Код: Выделить всё

# php -v
PHP 5.4.7 (cli) (built: Oct 30 2012 12:25:23) 
Copyright (c) 1997-2012 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2012 Zend Technologies
    with XCache v2.0.1, Copyright (c) 2005-2012, by mOo

Код: Выделить всё

# apachectl -v
Server version: Apache/2.2.22 (FreeBSD)
Server built:   Oct 30 2012 11:44:09

Код: Выделить всё

# cat /usr/local/etc/php/extensions.ini
extension=bz2.so
extension=curl.so
extension=ctype.so
extension=dom.so
extension=exif.so
extension=filter.so
extension=gd.so
extension=hash.so
extension=iconv.so
extension=json.so
extension=mbstring.so
extension=mcrypt.so
extension=mysql.so
extension=mysqli.so
extension=openssl.so
extension=pdo.so
extension=pdo_mysql.so
extension=pdo_sqlite.so
extension=phar.so
extension=posix.so
extension=session.so
extension=simplexml.so
extension=sqlite3.so
extension=tokenizer.so
extension=xml.so
extension=xmlreader.so
extension=xmlwriter.so
extension=zip.so
extension=zlib.so
;extension=apc.so
extension=pdf.so
extension=xsl.so
extension=dba.so
extension=gettext.so
extension=calendar.so
extension=fileinfo.so
extension=memcache.so

Код: Выделить всё

# cat /usr/local/etc/php.ini | grep allow_url
allow_url_fopen = On
allow_url_include = On

Вот скрипт, которым я тестирую cURL:

Код: Выделить всё

<?php

       if (isDomainAvailible('http://exist.ua'))
       {
               echo "It's Worked";
       }
       else
       {
               echo "Site not accessible";
       }

       function isDomainAvailible($domain)
       {
               
               if(!filter_var($domain, FILTER_VALIDATE_URL))
               {
                       return false;
               }

               $curlInit = curl_init($domain);
               curl_setopt($curlInit,CURLOPT_CONNECTTIMEOUT,10);
               curl_setopt($curlInit,CURLOPT_HEADER,true);
               curl_setopt($curlInit,CURLOPT_NOBODY,true);
               curl_setopt($curlInit,CURLOPT_RETURNTRANSFER,true);

               $response = curl_exec($curlInit);

               curl_close($curlInit);

               if ($response) return true;

               return false;
       }
?>
В итоге 99% сайтов недоступны, скрипт выполняется порядка 25 секунд с результатом Site not accessible
На другом схожем сервере, все работает. Подскажите на что обратить внимание, куда копать?

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35172
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: cURL php не работает с большинством сайтов

Непрочитанное сообщение Alex Keda » 2014-10-21 7:16:45

Версия curl'a?
Убей их всех! Бог потом рассортирует...

zg
полковник
Сообщения: 5845
Зарегистрирован: 2007-12-07 13:51:33
Откуда: Верх-Нейвинск

Re: cURL php не работает с большинством сайтов

Непрочитанное сообщение zg » 2014-11-19 20:46:35

Зачем curl?

Код: Выделить всё

#!/usr/bin/env php
<?php

$context = stream_context_create([
    'http' => [
        'timeout'         => 10,
        'ignore_errors'   => true,
        'request_fulluri' => true,
    ]
]);

$site = $argv[1];

$fp = @fopen($site, 'r', false, $context);

if ( $fp )
{
    printf("Сайт %s пашет!\n", $site);
    fclose($fp);
}
else 
{
    printf("Сайт %s не пашет :(( Ошибка: %s \n", $site, error_get_last()['message']);
} 

Код: Выделить всё

home% ./index.php http://www.ru
Сайт http://www.ru пашет!
home% ./index.php http://asdsdadadadasd.ru
Сайт http://asdsdadadadasd.ru не пашет :(( Ошибка: fopen(http://asdsdadadadasd.ru): failed to open stream: php_network_getaddresses: getaddrinfo failed: Name or service not known