[php]Как сгенерить страницу и посчитать её объём?
Ничего не понял, как минимум одно слово лишнее.
http://www.yandex.ru/yandsearch?rpt=rad&text=asd
ASD
www.ASD.ru (7 КБ)
Найденные слова · Еще с сайта (3935)
Как посчитать объём такой страницы, если она генериться из пхп?
ASD
www.ASD.ru (7 КБ)
Найденные слова · Еще с сайта (3935)
Как посчитать объём такой страницы, если она генериться из пхп?
Типа:
ob_start
генерация
$size=ob_get_length;
ob_end_flush;
$size будет содержать длину данных в буфере.
А в яндексе наверно немного другой случай.
Используй cURL или сокеты. Тебе ответом не php-код ведь вернется
wget, и посмотреть размер файла.
подробнее не можешь разъяснить, а то в мануале долго копацца и мне нужно решение только этой задачи?
Если той, которую ты клиенту отправляешь, придется немного поизвращаться: приблизительно тот-же код, который указал , только если нужно вписать размер в выдаваемую страницу, добавляешь вместо ob_end_flush; две строки:
ob_start;
//Весь вывод должен произойти после этой строки
//....
//генерация
//....
//весь вывод должен произойти до этой строки
$length = ob_get_length;
$content = ob_get_content;
ob_end_clean;
//теперь надо "вписать размер контента $length, полученный ранее (или по длине $content) в $content,
//например заменяя стандартную последовательность символов в шаблоне на размер,
//учитывая разницу длины стандартной последовательности и строки с размером
echo $content;//больше вывода не должно быть
Если же тебе надо узнать размер, который возвращает какая-то страница, то её просто надо получить.
Яндекс ведь не сам ту страницу генерит, а берёт уже готовую с того сайта, где она генериться.
www.page.com/index.php?par=... Мне нужно узнать, какой объем занимает сгенеренный на пхп html-код этой страницы. Я не знаю, как ещё можно это объяснить.
Есть страница по адресу Смотришь Content-Length в заголовках, и всё.
Это как раз и делается с помощью cURL или сокетов.
Можно конечно и просто посмотреть размер полученной странтцы.
Пример с использованием cURL:
$url = 'http://www.google.com/';
$ch = curl_init;
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_TIMEPUT, 3);
$result = curl_exec($ch);
В переменной $result содерщимое страницы.
Чтоб получать только заголовки, есть какой-то параметр, ща не вспомню... В доках на php.ru посмотри.
Как сгенерить страницу?
Во-вторых, какая вообще разница, генерится она на пхп, или лежит там в статике? Для клиена это совершенно прозрачно, всё это делает сервер на www.page.com.
В-третьих - а в чём тогда проблема?
Смотришь Content-Length в заголовках, и всёЕсли удалённая страница генерится, то с большой долей вероятности никакого Content-length не будет.
В данном случае, самый низкий уровень (если не считать, конечно, создание внешнего испольняемого файла на с и его исполнение, и прочие подобные вещи) - сокеты, уровень повыше - cURL, а самый высокий уровень (при разрешении устанавливать опции php.ini - должна быть включена опция allow_url_fopen или что-то такое) - file_get_contents и подобные. И не придётся задумываться о специфике файла - удалённая ли это веб-страница, генерящаяся на пхп; или это файл на фтп-сервере; или это локальный файл - всё равно всё будет работать.
$size = strlen(file_get_contents($file_url;
пасибки всем. Все получаецца с помощьюэто значит, что политика безопасности неправильная. У тебя Денвер чтоли? Настрой по нормальному пхп. А именно, allow_url_fopen лучше в ноль выставить. Тогда, кстати, такой код не будет работать.
$size = strlen(file_get_contents($file_url;
это значит, что политика безопасности неправильная. У тебя Денвер чтоли? Настрой по нормальному пхп. А именно, allow_url_fopen лучше в ноль выставить. Тогда, кстати, такой код не будет работать.Из каких соображений подобное нужно блокировать? Не считаю это нормальной настройкой.
Другое дело, что такой код может некорректно работать и в других ситуациях, я часто сталкивался, например, с тем, что если пытаться читать что-то из инета через fread, то есть указать большой блок для чтения, то работает очень нестабильно с ряда сайтов, то есть работает, но часто соединение рвётся. Вполне возможно, что и в подобном случае может произойти чего-нибудь подобного.
на www.page.comты смотрел, куда ссылка ведет ?
полную хуйню сказал.
Что ты придираешься к названиям? www.page.com сказал автор треда.
Из каких соображений подобное нужно блокировать?в некоторых случаях, это потенциальная дыра. Если надо работать со внешней информацией - лучше работать с ней явно, а не через fopen. Зато в тех местах, где со внешней информацией работать не следует, не придется проверять имя файла, если оно получается от клиента.
Замечу, что на большинстве хостингов (если это только не хороший платный хостинг) это дело скорее всего будет закрыто, т.к. админы, думаю, не дураки, чтобы давать возможность пользователям потенциальную дырку оставлять. (на сколько я понимаю, allow_url_fopen разрешает использовать удалённые файлы не только для fopen)
не придется проверять имя файла, если оно получается от клиентаАга, а при работе через сокеты, можно подумать, имя файла вообще обрабатывать не придётся.
в некоторых случаях, это потенциальная дыраПочему же по умолчанию она открыта?
Замечу, что на большинстве хостингов (если это только не хороший платный хостинг) это дело скорее всего будет закрыто, т.к. админы, думаю, не дураки, чтобы давать возможность пользователям потенциальную дырку оставлять.Я уже сказал, когда этот способ не подойдёт.
Ага, а при работе через сокеты, можно подумать, имя файла вообще обрабатывать не придётся.ты будешь сознательно его обрабатывать
Почему же по умолчанию она открыта?это не единственная потенциальная дыра, которую советуют прикрыть... Просто, например, для неопытного пользователя проще написать fopen, чем разбираться с cURL и, тем более, с сокетами.
Если где-то надо работать с сетью, лучше это делать явно... не знаю, почему, мне кажется так правильнее.
в некоторых случаях, это потенциальная дыра. Если надо работать со внешней информацией - лучше работать с ней явно, а не через fopen. Зато в тех местах, где со внешней информацией работать не следует, не придется проверять имя файла, если оно получается от клиента.Не знаю, чем другие способы безопаснее, в использовании одной функции для чтения локальных и удалённых файлов я вижу лишь одну проблему, что враг подставит вместо url имя локального файла, про который он хочет что-то узнать, например исходник просмотреть какой-нибудь, файл с паролями и т.п.
Замечу, что на большинстве хостингов (если это только не хороший платный хостинг) это дело скорее всего будет закрыто, т.к. админы, думаю, не дураки, чтобы давать возможность пользователям потенциальную дырку оставлять. (на сколько я понимаю, allow_url_fopen разрешает использовать удалённые файлы не только для fopen)Закрыто, но скорее всего из тех соображений, чтобы нельзя было использовать хостинг в качестве прокси-сервера, чтобы нельзя было использовать его для атак и т.п. И закрывают при этом вообще все исходящие соединения... Но это на бесплатных хостингах, на платных регистрируемых такое не практикуется, а дыр можно куда больше и куда более серьёзных понаделать, например при upload'е файлов, и много где ещё.
Оставить комментарий
iakobi91
Так же, как поисковики считают объём страницы, на которой есть искомое слово. Как это сделать)