Четверг, 25.04.2024
Меню сайта
Вход на сайт
Логин:
Пароль:
Поиск
Статистика
Рейтинг@Mail.ru Яндекс.Метрика
Реклама
HTML Perl PHP Прочее
Использование потоков PHP
В PHP была введена концепция потоков PHP. С этого момента образовался общий знаменатель всех типов ресурсов: файлов, данных HTTP и FTP и даже архивных файловых форматов. Итак рассмотрим то, что связано с файлами - потоки сжатия.

Код
<?php
$filename = __FILE__;
$zipfile = "$filename.zip";
$data = file_get_contents(__FILE__);
echo 'Загруженный файл (размер: ' . strlen($data) . ').<br>';
file_put_contents("compress.zlib://$zipfile", $data);
echo ' Запаковаййный файл (размер: ' . filesize ($zipfile) . ').<br>';
$data = file_get_contents("compress.zlib://$zipfile");
echo 'Оригинальный размер файла: ' . strlen($data) . '.';
?>

С помощью одного из этих потоков можно использовать файлы ZIP. А при помощи псевдопротокола compress.zlib:// к файлам ZIP можно обращаться так же, как и к обычным файлам. Для этого в системе UNIX/Linux нужно задействовать переключатель конфигураций -with-gzip; в системе Windows эти библиотеки включены изночально. Далее вы можете использовать файлы с помощью, например , file_get_contents() и file_put_contents().
Привыполнении приведенного кода текущий файл загружается с помощью file_get_contents(), сжимается по алгоритму zip и записывается на жесткий диск с помощью file_put_contents(). После этого считывается сжатый файл с помощью file_get_contents() и сравниваются размеры файлов.
Как альтернативу можно использовать встроенные в PHP функции ZIP, реализованные посредством интерфейсной функции ZZIPlib. К сожалению, эта функция может только читать данные из файла ZIP, но она поддрживает наличие в архиве нескольких файлов.
Чтобы установить данное расширение, в системе Windows используется строка extension=php_zip.dll в php.ini или сконфигурируйте PHP с ключем -with-zip, указав путь к ZZIPlib. Чтобы использовать расширение, следует выполнить такие действия:

  • Открыть архив с использованием zip_open();
  • Интерактивно пройти по элементам архива с помощью zip_read();
  • Прочесть нужный файл с помощью zip_entry_open() и zip_entry_read().

В приведенном ниже примере показывается содержимое архива ZIP и определяются имена и размеры всех файлов.

Код
<?php
$zipfile = dirname(__FILE__) . '/archive.zip';
if ($zip = zip_open($zipfile)) {
while ($file = zip_read($zip)) {
printf('%s (%d)<br>', zip_entry_name($file), zip_entry_filesize($file));
}
zip_close($zip);
}
?>
PHP 6180 25.03.2010
Материалы по теме: