Curl скриптик вместо стандартного инклюда - не работает. - Форум успешных вебмастеров - GoFuckBiz.com - Страница 2
 
 
Форум успешных вебмастеров - GoFuckBiz.com

  Форум успешных вебмастеров - GoFuckBiz.com > Бизнес-решения > Скрипты, программы и технические решения
Дата
USD/RUB88.4375
BTC/USD67361.9862
Скрипты, программы и технические решения Обсуждаем скрипты, программы и новые технологии.

Закрытая тема
Опции темы Опции просмотра
Старый 04.07.2009, 12:56
Start Post: Curl скриптик вместо стандартного инклюда - не работает. 
  #11
Shing
Senior Member
 
Регистрация: 23.03.2008
Сообщений: 343
Бабло: $62240
Question

<?php // Initialize the CURL library

$cURL = curl_init();

// Set the URL to execute

curl_setopt($cURL, CURLOPT_URL, “http://www.domain.com/1.txt”);

curl_setopt($cURL, CURLOPT_HEADER, 0);

curl_setopt($cURL, CURLOPT_RETURNTRANSFER, 1);

// Execute, saving results in a variable

$strPage = curl_exec($cURL);

// Close CURL resource

curl_close($cURL);

// This will print out the HTML contents

echo($strPage);

?>

Есть ли ошибка в скрипте?
Или в чем может быть еще причина?
В 1.txt обычный html.
В страницу вставляется этот php curl код, но ничего не выводится.
Shing вне форума  
Старый 04.07.2009, 17:21   #12
ziavra
Senior Member
 
Регистрация: 10.04.2007
Адрес: Balifor
Сообщений: 468
Бабло: $29318
По умолчанию

Цитата:
Сообщение от [[seomafia]] Посмотреть сообщение
вот почитай тест
Хмм, для меня это было открытием, спасибо. Действительно быстрее работает, правда в моём тест разница получилась меньше, чем по ссылке - в 2 раза всего.
ziavra вне форума  
Старый 04.07.2009, 18:02   #13
Bananz
Техноманьяк
 
Регистрация: 12.02.2009
Сообщений: 118
Бабло: $6200
Отправить сообщение для Bananz с помощью ICQ
По умолчанию

-bash-3.2# php ./curl.php
CURL:1.4210891723633
FGC:0.5161988735199
SCHEME:0.46960401535034
SOCKET:0.47101497650146

PHP код:
<?php
$useUrl 
'http://vz.ru/';
function 
getmicrotime()
{
    list(
$usec$sec) = explode(" "microtime());
    return ((float)
$usec + (float)$sec);
}

function 
getPage($url)
{
    
$ch curl_init();
    
curl_setopt ($chCURLOPT_URL,$url);
    
curl_setopt ($chCURLOPT_USERAGENT"Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6");
    
curl_setopt ($chCURLOPT_TIMEOUT60);
    
curl_setopt ($chCURLOPT_FOLLOWLOCATION1);
    
curl_setopt ($chCURLOPT_RETURNTRANSFER1);
    
$result curl_exec ($ch);
    
curl_close($ch);
    return 
$result;
}

function 
getPage2($url) {
    
$handle fopen($url"r");
    
$total '';
    while (!
feof($handle)) {
        
$total .= fread($handle8192);
    }
    
fclose($handle);
    return 
$total;
}

function 
getPage3($url) {
    
$m explode("/",$url);
    
$host $m[2];
    
array_shift($m);
    
array_shift($m);
    
array_shift($m);
    
$total '';
    
$handle fsockopen($url80);
    
$str "GET /".implode('/'$m)." HTTP/1.0\r\n".
    
"Host: ".$host."\r\n"."\r\n";
    
fwrite($handle$str);
    while (!
feof($handle)) {
        
$total .= fread($handle8192);
    }
    
fclose($handle);
    return 
$total;
}

$start getmicrotime();
getPage($useUrl);
$end getmicrotime();
echo 
"CURL:".($end-$start)."\n";

$start getmicrotime();
$z=file($useUrl);
$end getmicrotime();
echo 
"FGC:".($end-$start)."\n";

$start getmicrotime();
getPage2($useUrl);
$end getmicrotime();
echo 
"SCHEME:".($end-$start)."\n";

$start getmicrotime();
getPage3($useUrl);
$end getmicrotime();
echo 
"SOCKET:".($end-$start)."\n";
Код:
-bash-3.2# php ./curl.php
CURL:0.6472430229187
FGC:0.47049999237061
SCHEME:0.469407081604
SOCKET:0.46988391876221
-bash-3.2# php ./curl.php
CURL:0.50555300712585
FGC:0.47051906585693
SCHEME:0.46948599815369
SOCKET:0.47000193595886
-bash-3.2# php ./curl.php
CURL:0.87989401817322
FGC:0.47043204307556
SCHEME:0.47042989730835
SOCKET:0.46989893913269
-bash-3.2#
я чёто не понимаю может?

Последний раз редактировалось Bananz; 04.07.2009 в 18:55.
Bananz вне форума  
Старый 04.07.2009, 18:14   #14
dveredel
Читатель
 
Аватар для dveredel
 
Регистрация: 23.11.2007
Сообщений: 420
Бабло: $48745
По умолчанию

Мой тест:
PHP код:
<?php
$url 
'http://lenta.ru';
$t1 $t2 0;

for(
$i=0;$i<20;$i++) {
    
$tmp microtime(true);
    
$ch curl_init($url.'?'.rand());
    
curl_setopt ($chCURLOPT_USERAGENT"Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6");
    
curl_setopt ($chCURLOPT_RETURNTRANSFER1);
    
$result curl_exec($ch);
    
curl_close($ch);
    
$t1 += microtime(true)-$tmp;

    
$tmp microtime(true);
    
$resutl file_get_contents($url.'?'.rand());
    
$t2 += microtime(true)-$tmp;
}    
    
echo 
"Curl: $t1<br>FGS: $t2";
?>
Curl: 2.3108081817627
FGС: 3.7066597938538

Curl: 2.2540092468262
FGС: 3.9852707386017

Curl: 2.2337591648102
FGС: 2.5732133388519

Curl: 2.2384498119354
FGС: 2.6073923110962

Curl: 2.513343334198
FGС: 2.596785068512
dveredel вне форума  
Старый 04.07.2009, 18:32   #15
oso
кодер
 
Аватар для oso
 
Регистрация: 21.01.2008
Сообщений: 315
Бабло: $69585
По умолчанию

Цитата:
Сообщение от Oso
курл быстрее, по моему, работает
Цитата:
Сообщение от JMen Посмотреть сообщение
курл не работает быстрее чем file_get_contents. (точка в конце - это со смыслом )
за всеми моими постами следишь? поясни почему ты решил что не быстрее
__________________
php скрипты от $25 Отзывы: 2013-2011, 2010, 2009. acя: 384 846 ноль два шесть
oso вне форума  
Старый 04.07.2009, 18:45   #16
Bananz
Техноманьяк
 
Регистрация: 12.02.2009
Сообщений: 118
Бабло: $6200
Отправить сообщение для Bananz с помощью ICQ
По умолчанию

имхо, соль в том, что курл оставляет открытыми сокеты (читай про keep-alive) и потому отъезжает быстрее на _последующих_ запросах на тот же сервер
Если же запросы летят в разные сервера, то fgc работает быстрее (смотри самый первый тест у меня)

Исходя из этого:
-fgc работает быстрее в случае единичного запроса
-curl работает быстрее в случае некоторого количества запросов в один домен

время на создание объекта curl _больше_ чем время на выполнение scheme-based анализа, время открытия сокета в curl меньше - нет лишних уровней абстракции.

то есть, правы обе стороны получаются
Bananz вне форума  
Старый 04.07.2009, 18:46   #17
JMen
учу php
 
Регистрация: 04.04.2008
Сообщений: 1,162
Бабло: $68290
По умолчанию

Вот результаты: крул/fgc

microsoft: 1.51398396492/1.0944890975952
google: 0.36146211624146/0.53821206092834
some: 0.69859313964844/0.60874319076538
static: 3.8501799106598/3.5867750644684

Случаи когда в 4 разная скорость говорят о подтасовках. Результаты должны быть примерно одинаковые с перевесом fgc. Если курл работает на хосте быстрее чем fgc - значит хост обрабатывает юзер агент и просто ветки алгоритмов разные идут (google). Аналогично и там где резкие отличия в сторону fgc (microsoft). Их нельзя рассматривать как объективные.

Тест нельзя проводить дважды. Различаются алгоритмы хеширования и кеширования.
__________________
Подпись??? Не продам!
JMen вне форума  
Старый 04.07.2009, 18:49   #18
JMen
учу php
 
Регистрация: 04.04.2008
Сообщений: 1,162
Бабло: $68290
По умолчанию

Насчёт дважды - тут я как раз то - же что и Банзай хотел сказать, т.е. в этом случае курл скорее всего будет быстрее (если не рвёт коннект).
__________________
Подпись??? Не продам!
JMen вне форума  
Старый 04.07.2009, 18:52   #19
JMen
учу php
 
Регистрация: 04.04.2008
Сообщений: 1,162
Бабло: $68290
По умолчанию

Бананаз, у тебя два раза getPage2 дёргается, вместо getPage3 - подправь, таких подтасовок не надо )
__________________
Подпись??? Не продам!
JMen вне форума  
Старый 04.07.2009, 18:54   #20
Bananz
Техноманьяк
 
Регистрация: 12.02.2009
Сообщений: 118
Бабло: $6200
Отправить сообщение для Bananz с помощью ICQ
По умолчанию

угу, косяк
Правда на результаты fgc и курла это не влияет, так что это не подтасовка, а ошибка
Bananz вне форума