Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Как "затарить" несколько файлов?
 
 автор: Саня   (19.06.2006 в 00:56)   письмо автору
 
 

Насколько я знаю, сжать несколько файлов в один архив алгоритмом gzip нельзя. Нужно предварительно объединить все файлы утилитой tar, а затем сжать. Так вот, как можно средствами PHP сделать тарбол?

Нашёл парочку тем:
http://softtime.ru/forum/read.php?id_forum=1&id_theme=271
http://softtime.ru/forum/read.php?id_forum=1&id_theme=6548
но в них рассказывается про вызов сторонней утилиты. А как сделать исключительно средствами PHP? Например если файлы объединяются в один, то они должны как-то разделяться! Ключевым словом, например. И можно при помощи file_get_contents() получить содержимое файлов, а затем объединить в одну переменную, предварительно отделив один файл от другого с при помощи того самого ключевого слова...

   
 
 автор: cheops   (19.06.2006 в 11:37)   письмо автору
 
   для: Саня   (19.06.2006 в 00:56)
 

Можно поступить следующим образом - сформировать массив
<?php
  $arr
= ("имя_файла1" => "его_содержимое1",
              
"имя_файла2" => "его_содержимое2",
              
"имя_файла3" => "его_содержимое3",
              
"имя_файла4" => "его_содержимое4")
?>

Затем сериализовать массив (т.е. превратить его в строку).

  $str = serialize($arr);

И сжать, сохранив при этом в файле
<?php
  
// имя файла 
  
$filename "test.arr.gz"
  
// Открываем файл для записи (w) с максимальной 
  // степенью компрессии (9) 
  
$zp gzopen($filename"w9"); 
  
// Записываем в файл строку $s 
  
gzwrite($zp$str); 
  
// Закрываем файл 
  
gzclose($zp); 
?>

А при распаковке выполнить обратную процедуру.

   
 
 автор: Саня   (19.06.2006 в 15:44)   письмо автору
 
   для: cheops   (19.06.2006 в 11:37)
 

Мне бы что-нибудь совместимое со стандартными средствами, вроде winrar. А то запакую на сервере, а клиент не сможет у себя распаковать.

   
 
 автор: Loki   (19.06.2006 в 16:40)   письмо автору
 
   для: Саня   (19.06.2006 в 00:56)
 

Насколько я порылся в инете, tar файл содержит информацию о путях, дате, владельце, размере(?) файла. То есть все-таки лучше искать нормальное описание формата.

   
 
 автор: XPraptor   (19.06.2006 в 16:47)   письмо автору
 
   для: Loki   (19.06.2006 в 16:40)
 

Саня, сходил бы ты на PEAR и взял готовый модуль упаковки в любой архив (zip, tar, gz) и не мучался бы. Заодно поковырялся в коде где пакуетя в этот архив.

   
 
 автор: Саня   (19.06.2006 в 17:24)   письмо автору
 
   для: XPraptor   (19.06.2006 в 16:47)
 

Точно, блин! Буквально на днях был на PEAR и даже скачал себе расширение "File_Archive". А потом забыл про него :)

Всем спасибо.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования