ОЧЕНЬ ПРОШУ ПОМОЩЬ ПО cURL

N
На сайте с 08.03.2010
Offline
13
879

Моя программа выглядит следующим образом.


function grab ($url)
{
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_FAILONERROR, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_TIMEOUT, 300);
$result = curl_exec($ch);
curl_close($ch);
$unique_start = "<table ";
$unique_end = "</table>";
if (preg_match('/'.preg_quote($unique_start,'/').'(.*)'.preg_quote($unique_end, '/').'/Us', $result, $tabl))
{
return $tabl[0];
}
else
{
echo("NOT found");
}

}
$url = "http://www.primer.ru/a/";
$mas=grab($url);
echo ($mas);

Так вот работает все замечатльно, НО в cURL существует какое-то ограничение по размеру, потому как если я пытаюсь вытащить таблицу большой длинны (максимальный размер так и не понял) она не качается. Для примера - таблицу с количеством строк 150 тащит нормально, 300 уже нет - то есть пишет NOT Found.

ВОПРОС - как убрать это ограничение к длинне контента??

malls
На сайте с 08.08.2005
Offline
255
#1

В курле нет ограничений на контент, есть ограничения на время, у вас оно кстати смешное:

CURLOPT_TIMEOUT, 3

вот наверное там и собака порылась.

(сейчас плюха вам прилетит от модеров за заголовок темы)

N
На сайте с 08.03.2010
Offline
13
#2
malls:
В курле нет ограничений на контент, есть ограничения на время, у вас оно кстати смешное:
CURLOPT_TIMEOUT, 3
вот наверное там и собака порылась.

(сейчас плюха вам прилетит от модеров за заголовок темы)

не получается, поставил 300))

да с темой протупил, просто первая моя тема, спасибо, есть еще какие-нибудь идеи?? :)

простите меня господа модераторы за не опытность

malls
На сайте с 08.08.2005
Offline
255
#3
nwarap:
да с темой протупил, просто первая моя тема, спасибо, есть еще какие-нибудь идеи?? :)

Есть! Не заниматься мазохизмом в духе:


$unique_start = "<table ";
$unique_end = "</table>";
if (preg_match('/'.preg_quote($unique_start,'/').'(.*)'.preg_quote($unique_end, '/').'/Us', $result, $tabl))
{
return $tabl[0];
}
else
{
echo("NOT found");
}

}

А забрать сначала курлом страницу, а уж потом резать ее как хочется, хоть регуляркой, хоть эксплодами.

N
На сайте с 08.03.2010
Offline
13
#4

В моем случае мне надо именно делать так, поскольку я в цикле обрабатываю информацию со 100 страниц. И кстати все же какая-то привязка к размеру все же существует!

Привожу пример - я обрабатывал 100 страниц, на каждой из них по одной таблице.

Так вот 90 у меня вытащилось нормально, а с 10 (самых длинных) не удается.

Ответ связанный со временем также подходит, но я поменял значение константы, а воз и ныне там. Все странно!!!! :)

Ёхан Палыч
На сайте с 07.05.2006
Offline
169
#5
nwarap:
Привожу пример - я обрабатывал 100 страниц, на каждой из них по одной таблице.
Так вот 90 у меня вытащилось нормально, а с 10 (самых длинных) не удается.

По моему в preg_match недокументированная особенность - это длина 100000 байт, при большей длине отдает false. Меняйте алгоритм.

P.S. Есть вариант лечения - ini_set("pcre.backtrack_limit",10000000);

[Удален]
#6

Ёхан Палыч, да, была такая фишечка ...

N
На сайте с 08.03.2010
Offline
13
#7
Ёхан Палыч:
По моему в preg_match недокументированная особенность - это длина 100000 байт, при большей длине отдает false. Меняйте алгоритм.
P.S. Есть вариант лечения - ini_set("pcre.backtrack_limit",10000000);

МАСТЕР))))

Спасибо, и сколько же я времени убил))) рррр

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий