Druzya.org
Возьмемся за руки, Друзья...
 
 
Наши Друзья

Александр Градский
Мемориальный сайт Дольфи. 
				  Светлой памяти детей,
				  погибших  1 июня 2001 года, 
				  а также всем жертвам теракта возле 
				 Тель-Авивского Дельфинариума посвящается...

Библиотека :: Компьютеры и Программирование :: Котеров Д. В. - Самоучитель PHP 4
<<-[Весь Текст]
Страница: из 287
 <<-
 
 возможностей. Сценарий собирает сведения о размере каж- 
дого файла сайта, печатая на каждом этапе имена обработанных объектов, а затем 
выводит сводную информацию. 
Листинг 33.2. Демонстрация возможностей функции WalkSite(): demo.php 
$fname
"; // в качестве примера — просто добавляем имя файла в массив $Result[]="$fname: ".filesize($fname).""; } // Если WalkSite() вернула false, значит, процесс закончился. if(!WalkSite($DOCUMENT_ROOT,"Walk","map",0,$Result)) { // В качестве примера просто выводим содержимое массива, // сформированного вызовами функции Walk(). Реальный код // должен был бы вырабатывать HTML-представление карты, // данные которой накоплены в $Result. print "
"; print join("
\n",$Result); } else { // для примера заставляем страницу обновить саму себя, // имитируя многократные посещения пользователей. print ""; } ?> В этом сценарии функции WalkSite() передается 0 как значение размера кванта времени, в течение которого можно собирать данные о сайте. Это означает, что фай- лы будут обрабатываться по одному при каждом запросе. В реальном коде карты сервера, конечно, это не так — нужно указывать приемлемый промежуток времени, чтобы в него "уложилась" обработка сразу нескольких страниц. Чем меньше будет этот промежуток, тем менее заметным для пользователя станет замедление, связанное с работой сценария, но тем значительнее будут "накладные расходы", вызванные работой функций сериализации. Так что тут нужно выбирать некоторый "средний" вариант. Проще всего это сделать опытным путем — например, так, чтобы примерно за час при известной посещаемости успевала перестроиться вся карта сервера. Функция WalkSite() из листинга 33.2 работает с файлами, устанавливая на них рекомендательные блокировки. Этот процесс хоть и позволяет обойти про- блемы с разделением доступа к файлам, немного сложен для понимания. Он подробно описан в главе 15 части IV. Использование самопереадресации Термин самопереадресация (или, в английском варианте, self-redirect) означает свой- ство сценария подавать в браузер клиента запрос, заставляющий его (браузер) заново Глава 33. Разные советы 501 выполнить и загрузить этот сценарий с сервера. Звучит, как языческое заклинание, не правда ли? Пожалуй, с первого взгляда не совсем ясно, зачем же может понадобиться эта хваленая самопереадресация в Web-программировании. Рассмотрим пример. Предположим, у нас имеется сценарий — гостевая книга напо- добие той, эскиз которой мы рассматривали в главе 30. С точки зрения пользователя сценарий представляет собой страницу с адресом http://www.ourserver.ru/book/index.html. Если набрать этот адрес в браузе- ре, появится, во-первых, форма с предложением добавить новое сообщение в книгу, а во-вторых, список ранее добавленных "посланий". В атрибуте action тэга
указан адрес той же самой страницы index.html (это вписывается в трехуровневую схему разработки сценариев), поэтому после набора сообщения и нажатия на кнопку отправки фактически снова загружается та же самая страница. Только перед ее за- грузкой генератор данных гостевой книги определяет, что необходимо добавить но- вую запись, и делает это. В общем-то, довольно стандартная схема. Пусть пользователь набрал свое послание и отправил его на с
 
<<-[Весь Текст]
Страница: из 287
 <<-