Forum Webscript.Ru

Программирование => PHP => Тема начата: Uzver от 14 Февраля 2006, 20:26:36

Название: определение размера страницы по её url
Отправлено: Uzver от 14 Февраля 2006, 20:26:36
Второй день пытаюсь решить вопрос определения размера страницы по известному url. Все что удалось найти по этой теме это чтение страницы через fsockopen с последующим поиском в ответе строки вида Content-Length:… но как ни странно ни разу не получил эту строку в заголовках возвращаемых сервером.
Собственно вопрос, какие еще методы определения размера страницы? Пересчет полученного ответа по байтам или сохранение страницы в файл с последующим определением размера както то не очень хочется юзать.
Название: определение размера страницы по её url
Отправлено: for_i_0 от 14 Февраля 2006, 22:35:45
мануал  -> file_size() (http://www.php.net/manual/en/function.filesize.php)
Название: определение размера страницы по её url
Отправлено: Uzver от 14 Февраля 2006, 22:45:15
Цитировать
for_i_0:
мануал -> file_size()

Повторюсь еще раз "Пересчет полученного ответа по байтам или сохранение страницы в файл с последующим определением размера както то не очень хочется юзать". Определяется размер веб-страницы, удаленной.
Название: определение размера страницы по её url
Отправлено: for_i_0 от 14 Февраля 2006, 22:52:50
Uzver
Интересно, а как иначе ты это себе предстовляешь ?
Название: определение размера страницы по её url
Отправлено: hanslinger от 14 Февраля 2006, 22:55:06
[p]strlen[/p]
Название: определение размера страницы по её url
Отправлено: Uzver от 14 Февраля 2006, 23:09:58
Цитировать
for_i_0:
Интересно, а как иначе ты это себе предстовляешь ?

если верить мануалам и прмерам выложенным в нет то следюющий пример должен напечатать размер страницы:
$urlArray = parse_url("http://forums.webscript.ru/");
if (!isset($urlArray["port"])) $urlArray["port"] =  "80";
if (!isset($urlArray["path"])) $urlArray["path"] =  "/";
if ($urlArray["host"] != gethostbyname($urlArray["host"])) {
   $fp = fsockopen ($urlArray[host], $urlArray[port], $errno, $errstr, 10);
   if (isset($fp)) {
      socket_set_blocking($fp);
      fputs ($fp, "HEAD $urlArray[path] HTTP/1.1\\r\\nHost: $urlArray[host]\\r\\nConnection: Close\\r\\n\\r\\n");
      while ($str = fgets($fp, 1024)) {
         if (ereg("^Content-Length: ([0-9]+)",$str,$size)) {echo $size[1];}
      }
      fclose($fp);
       flush();
   }
}
Название: определение размера страницы по её url
Отправлено: Uzver от 14 Февраля 2006, 23:13:17
но вот срабатывает он лиш в единичьных случаях, сервер просто не возвращает в загаловках нужную информацию, но вот почему понять не могу, вродебы от настроек сервера это не должно зависить
Название: определение размера страницы по её url
Отправлено: Меняздесьдавнонет от 14 Февраля 2006, 23:52:27
феерический топик
Название: определение размера страницы по её url
Отправлено: Uzver от 15 Февраля 2006, 00:12:02
Цитировать
RomikChef:
феерический топик

ну не знаю, мне совсем не радостно :-(
Название: определение размера страницы по её url
Отправлено: Меняздесьдавнонет от 15 Февраля 2006, 00:14:02
а меня прёт.
что с твоих умозаключений, что - особенно - с ответов =)

в этом топике вообще никто не понимает, как работает то, о чём говорят.
Название: определение размера страницы по её url
Отправлено: Uzver от 15 Февраля 2006, 00:16:24
Цитировать
RomikChef:
что с твоих умозаключений, что - особенно - с ответов =)

о, я сумел комуто поднять настроение, это радует, вот ктоб еще мне его поднял, чуть чуть
Название: определение размера страницы по её url
Отправлено: andymc от 16 Февраля 2006, 22:36:41
Напрямую file_size(\'http://site.ru/\') не работает.
$fo=fopen("http://site.ru/","r")  - так вы можете открыть файл.
Но это не поможет. Надо считать файл в строку.
Для этого имплодим массив строчек.
$cont = implode (\'\', file (\'http://site.ru/\'));
$size=strlen($cont); // вот вам и размер файла в граммах.
Увы, не на всех серверах это работает....
Название: определение размера страницы по её url
Отправлено: Uzver от 16 Февраля 2006, 22:46:35
Цитировать
andymc:
$size=strlen($cont); // вот вам и размер файла в граммах.

читайте внимательно вопрос
Пересчет полученного ответа по байтам или сохранение страницы в файл с последующим определением размера както то не очень хочется юзать
Название: определение размера страницы по её url
Отправлено: ВитС от 19 Февраля 2006, 03:34:32
Uzver
Цитировать
читайте внимательно вопрос
Пересчет полученного ответа по байтам или сохранение страницы в файл с последующим определением размера както то не очень хочется юзать


Извините, а кто Вам сказал, что сервер выдаст подобную информацию? Кстати, это не относится к PHP никак.

Чтобы было понятно совсем:
Я некий вебмастер, который хочет знать какой именно размер имеет страница на некоем [стороннем] сайте. Если страница того сервера статична, то у вас всё ok.
Если нет - то в заголовке через сокс ничего получить нельзя. Поэтому ваш пример и не работает.

Конечно, можно поднастроить вебсервер иначе..., но не думаю, что вам пойдут навстречу... ;-)
Название: определение размера страницы по её url
Отправлено: avenger-f от 20 Февраля 2006, 14:33:14
Единственный, на мой взгляд, надежный способ получить размер страницы на чужом сайте - открыть сокет, считать все целиком, отрезать заголовки. Другого надежного способа нет - сервер может и не выдавать ContentType.
Название: определение размера страницы по её url
Отправлено: Uzver от 20 Февраля 2006, 14:42:34
в том то и проблема что выдает через раз, даже на статику, бывает что одни и теже страницы раз возвращают размер а другой раз нет, видимо таки придется пересчитывать побайтно :-(
Название: определение размера страницы по её url
Отправлено: Меняздесьдавнонет от 20 Февраля 2006, 14:51:02
самый простой способ - это не брать страницы, а отдавать.
для этого вебсайты придуманы.
тема закрыта.