|
| Дата |
|
USD/RUB | 88.4375 | BTC/USD | 67361.9862 |
|
|
|
Скрипты, программы и технические решения Обсуждаем скрипты, программы и новые технологии. |
04.07.2009, 12:56
|
Start Post: Curl скриптик вместо стандартного инклюда - не работает.
|
Senior Member
Регистрация: 23.03.2008
Сообщений: 343
Бабло: $62240
|
<?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 код, но ничего не выводится.
|
|
|
04.07.2009, 17:21
|
#12
|
Senior Member
Регистрация: 10.04.2007
Адрес: Balifor
Сообщений: 468
Бабло: $29318
|
Цитата:
Сообщение от [[seomafia]]
вот почитай тест
|
Хмм, для меня это было открытием, спасибо. Действительно быстрее работает, правда в моём тест разница получилась меньше, чем по ссылке - в 2 раза всего.
|
|
|
04.07.2009, 18:02
|
#13
|
Техноманьяк
Регистрация: 12.02.2009
Сообщений: 118
Бабло: $6200
|
-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 ($ch, CURLOPT_URL,$url);
curl_setopt ($ch, CURLOPT_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 ($ch, CURLOPT_TIMEOUT, 60);
curl_setopt ($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
$result = curl_exec ($ch);
curl_close($ch);
return $result;
}
function getPage2($url) {
$handle = fopen($url, "r");
$total = '';
while (!feof($handle)) {
$total .= fread($handle, 8192);
}
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($url, 80);
$str = "GET /".implode('/', $m)." HTTP/1.0\r\n".
"Host: ".$host."\r\n"."\r\n";
fwrite($handle, $str);
while (!feof($handle)) {
$total .= fread($handle, 8192);
}
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.
|
|
|
04.07.2009, 18:14
|
#14
|
Читатель
Регистрация: 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 ($ch, CURLOPT_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 ($ch, CURLOPT_RETURNTRANSFER, 1); $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
|
|
|
04.07.2009, 18:32
|
#15
|
кодер
Регистрация: 21.01.2008
Сообщений: 315
Бабло: $69585
|
Цитата:
Сообщение от Oso
курл быстрее, по моему, работает
|
Цитата:
Сообщение от JMen
курл не работает быстрее чем file_get_contents. (точка в конце - это со смыслом )
|
за всеми моими постами следишь? поясни почему ты решил что не быстрее
__________________
php скрипты от $25 Отзывы: 2013-2011, 2010, 2009. acя: 384 846 ноль два шесть
|
|
|
04.07.2009, 18:45
|
#16
|
Техноманьяк
Регистрация: 12.02.2009
Сообщений: 118
Бабло: $6200
|
имхо, соль в том, что курл оставляет открытыми сокеты (читай про keep-alive) и потому отъезжает быстрее на _последующих_ запросах на тот же сервер
Если же запросы летят в разные сервера, то fgc работает быстрее (смотри самый первый тест у меня)
Исходя из этого:
-fgc работает быстрее в случае единичного запроса
-curl работает быстрее в случае некоторого количества запросов в один домен
время на создание объекта curl _больше_ чем время на выполнение scheme-based анализа, время открытия сокета в curl меньше - нет лишних уровней абстракции.
то есть, правы обе стороны получаются
|
|
|
04.07.2009, 18:46
|
#17
|
учу 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). Их нельзя рассматривать как объективные.
Тест нельзя проводить дважды. Различаются алгоритмы хеширования и кеширования.
__________________
Подпись??? Не продам!
|
|
|
04.07.2009, 18:49
|
#18
|
учу php
Регистрация: 04.04.2008
Сообщений: 1,162
Бабло: $68290
|
Насчёт дважды - тут я как раз то - же что и Банзай хотел сказать, т.е. в этом случае курл скорее всего будет быстрее (если не рвёт коннект).
__________________
Подпись??? Не продам!
|
|
|
04.07.2009, 18:52
|
#19
|
учу php
Регистрация: 04.04.2008
Сообщений: 1,162
Бабло: $68290
|
Бананаз, у тебя два раза getPage2 дёргается, вместо getPage3 - подправь, таких подтасовок не надо )
__________________
Подпись??? Не продам!
|
|
|
04.07.2009, 18:54
|
#20
|
Техноманьяк
Регистрация: 12.02.2009
Сообщений: 118
Бабло: $6200
|
угу, косяк
Правда на результаты fgc и курла это не влияет, так что это не подтасовка, а ошибка
|
|
|
|