© разом. Поддерживаются все браузеры, отправ-
ляющие корректную шапку/Иеабег о том, что они
принимают сжатые \«еЬ-страницы.
В качестве подопытной статьи давайте возьмем
на сайте журнала
2 2
,
файл
sql_book.rar) книгу о языке запросов SQL, которая
в распаковке занимает 740 Кб. Ее текст включим в
следующий РНР-код нашей тестовой страницы
test_gzip.php:
!
<?
ob_start( “ob_gzhand 1er” ) ;
к*
?>
СОДЕРЖАНИЕ ГЛАВ КНИГИ
Для некоторых игр
вместо «Систем-
ные требования»
нужно писать «Си-
стемные вымога-
тельства»!
©
©
©
Для большей точности измерения трафика можно
воспользоваться
удобной
программой
ВКМе1ег
Итак,
благодаря
конструкции оЬ_
81
аг
1
(“ оЬ_д
2
Ьапс
11
егю) наша книга
загрузится в 3,5 раза быстрее, чем без сжатия.
Сжатие файлов
К
ак и сжатие веб-страниц, веб-программисту
доступно сжатие файлов, например, алгорит-
мом ZIP. Вся необходимая документация собрана
на страницах
даваемого нами архива.
После этого в условном операторе вызовом ме-
тода
open
нашего объекта открываем файл архива,
указывая
его
имя
и
константу
ZIPARCHIVE::CRE-
АТЕ.
Т.е. этим действием создаем архив, если та-
кого файла ещё не существует. Для более компакт-
ного написания этой строки кода, вместо констан-
ты можно подставить единицу.
Затем командой
file_get_contents
считываем со-
держимое
предыдущего
скрипта
(test_gzip.php),
ведь он
же
файл,
вот и
будем
его
сжимать для
тренировки ;)
Итак,
в архив можно добавить обычную тексто-
вую строку как файл. Мы этим воспользуемся и вы-
зовом
метода
addFromString
добавим в наш ар-
хив новую запись под именем файла “test_gzip.txt”,
а содержимое для него пускай возьмет из пере-
менной
$text.
В
качестве следующего файла,
добавляемого
в
архив, укажем произвольную строку и укажем, что
ее следует считать файлом “testfile2.txt”.
Вот мы и добавили уже два файла в архив. Но это
некий текст, а как добавить реальный файл, распо-
ложенный на сервере, не загружая его? Для этого
вызовем
метод
addFile,
и
укажем,
что
следует
взять на сервере реальный файл “test_gzip.php”, и
добавить его в архив под именем “test_gzip2.txt”.
Как вы понимаете, журнал не резиновый, много в
нем не уместишь, и прочие бла-бла-бла.
.. ;) Поэто-
му могу лишь показать на кратких примерах, как и
чего тут надо делать. А если вам понадобится что-
то усложнить, то читайте документацию.
Следуя
традиции
упрощения
всего
сложного,
язык РНР дарит нам очередное упрощение.
.U " : V
. .
.^f-1
; :• i |ij5 “
1
$zip = new ZipArchive();
$filename = “test.zip”;
if
($zip->open($filename,
ZIPARCHIVE::CRE-
ATE)!==TRUE) {
echo “He могу открыть файл ‘“ .$filename.”’”;
He пугайтесь, что берем один файл, а добавляєм
его в архив уже под другим именем. Можно добав-
лять и под его собственным именем, но я хочу по-
казать, что при добавлении в архив имеется воз-
можность дать сжимаемому файлу другое имя, ес-
ли это необходимо.
Ну и в завершение нашего примера выводим ин-
формацию о количестве добавленных в архив фай-
лов и закрываем архив методом
close. В
результа-
те получим в браузере строку “numfiles: 3 status: О” .
Замечу,
что
если
файл
архива с таким
именем
уже существует, то файлы будут добавлены в него.
Вывод списка файлов архива
і
В человеке 80% воды.
I
В Интернете - 99.9%.
..
^^ііішіідиіімііжпіп^іітіжііітімшіиімпімшшиїїшіиіііііппііїтіїиімііпіі
exit;
}
$text = file_get_contents(“test_gzip.php”);
$zip- >addFromString( “test_gzip.txt”, $text) ;
$zip->addFromString(“testfile2.txt”,
“This
is
a
test
string added as testfile2.txt.\n”);
$zip->addFile(“test_gzip.php”, “test_gzip2.txt”);
echo “numfiles: “.$zip->numFiles.”\n ”;
echo “status: ”. $zip->status."\n” ; •
$zip->close();
В данном скрипте вызовом
конструктора г1рАг-
сЫуе создаем объект
$г!р,
как экземпляр. Далее в
переменной
1
епате
указываем имя файла соз-
Б
ывает необходимо уметь не только создавать
архив, но и прочитать его содержимое. Сле-
дующий простой пример покажет это:
К
Бесплатный хостинг
хуже бесплатного та-
таринга.
ш м а ж л
_
tfn4ttu«m-- Luu
< ?
$zip = new ZipArchive();
$zip->open(‘test.zip’);
for( $t =' 0; $i < $zip->numFiles; $i++ ){
$stat = $zip->statlndex( $i );
echo “<BR>”.basename( $stat[‘name’]);
?>
й д е в й Ш м . m u
Ы
)
VM/
V
m
)
В результате открытия уже созданного нами ра-
нее архива “test.zip” и перебора его содержимого
получим список входящих в него файлов:
предыдущая страница 29 Компьютер 2011 11-12 читать онлайн следующая страница 31 Компьютер 2011 11-12 читать онлайн Домой Выключить/включить текст