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

Форум PHP

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

 

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

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

тема: PCLZIP: пару вопросов можно?
 
 автор: Giga   (26.09.2006 в 18:57)   письмо автору
 
 

1. Какой функцией извлечь список файлов в архиве без распаковки. То есть открыть для чтения можно? 2. Как создать буфер для временных файлов извлеченных из архива, с их удалением (заменой) при новом цикле (запросе) к скрипту.

   
 
 автор: Саня   (26.09.2006 в 22:35)   письмо автору
 
   для: Giga   (26.09.2006 в 18:57)
 

1. Методом listContent().
2. Что вы подразумеваете под буфером для временных файлов? А удалить файл можно функцией unlink().

http://php.russofile.ru/ru/authors/unsort/zip/

   
 
 автор: Giga   (27.09.2006 в 10:24)   письмо автору
 
   для: Саня   (26.09.2006 в 22:35)
 

Спасибо, немного разобрался. Похожую проблему как в ссылке хочу решить и я. Там у него индексы для извлечения отдельного файла из архива уже есть в скрипте. Я же эти индексы хочу взять из архива. Более всего на роль индекса подходит имя файла, я его получил без распаковки с помощью listContent(), теперь вот загвоздка как из того цикла выбрать массив с значением $key = 'filename'; и записать в файл, например listfilename.txt, попытка внедрить запись в сам цикл привела только к записи последнего индекса. То есть из списка цикла в 100 файлов архива, в базу listfilename.txt записался только последний $i=100, а не весь массив. Тяжело блин обьяснять, "я не волшебник, только учусь" :)

   
 
 автор: Giga   (27.09.2006 в 10:29)   письмо автору
 
   для: Giga   (27.09.2006 в 10:24)
 

А насчет временных файлов я сделал через fopen (temporary.file, "w") по идее должно при новом извлечении файла из архива содержимое перезаписать в этот файл. Сильно боюсь я за буфер временных файлов. Если размещу на хостинге, а место у меня весьма скудное, могут забить этот буфер и повиснет мой хостинг.

   
 
 автор: Саня   (27.09.2006 в 15:24)   письмо автору
 
   для: Giga   (27.09.2006 в 10:24)
 

А каким скрипты вы производите запись в файл?

   
 
 автор: Giga   (27.09.2006 в 18:05)   письмо автору
 
   для: Giga   (26.09.2006 в 18:57)
 

Как каким? Своим собственным. Сам пишу на основе функций pclzip. Прикинул степень сжатия тестового архива файлов 92 штук миди размером 339 kb, при распаковке выходит 1.85 mb, а места на диске занимает 2.04 mb. Пока добился вывода списка файлов.
include_once('pclzip.php');
 $arch = "test.zip";
 $zip=new PclZip("$arch");
?echo "$arch<br>";
?     if (($list = $zip->listContent()) == 0) {?
        die("Error : ".$zip->errorInfo(true));
? } $archsize = filesize($arch); $archsize = round($archsize/1024);
$archcount = count($list); echo "размер ".$archsize." kb<br>всего: ".$archcount."файл(ов)<br>";
  for ($i=0; $i<sizeof($list); $i++) { 
for(reset($list[$i]);
 $key = key($list[$i]);
 next($list[$i])) { $listcontent = "[$i]-$key:".$list[$i][$key]."";
 $listfile = strst($listcontent,"-filename");       
$listfile =ereg_replace("([0-9A-Za-z()_^\.]+#*)","<a href=\"$PHP_SELF?mode=extract&amp;arch=$arch&amp;
file=\\1\">\\1</a><br>",$listfile);

   
 
 автор: Giga   (27.09.2006 в 18:12)   письмо автору
 
   для: Giga   (26.09.2006 в 18:57)
 

Переменную $arch соответственно можно подставить любую. Полученную переменную $file с именем файла в архиве передаю
$content = $zip->extract(PCLZIP_OPT_BY_NAME, $file, PCLZIP_OPT_EXTRACT_AS_STRING);?//
   ?$content = $content[0]['content'];?
$base=fopen("temporary.mid","w");?
fputs($base,"$content");?fclose($base);
?содержимое файла $file записываю в temporary.mid. При новом запуске сценария и изменения значения $file соответственно перезаписывает temporary.mid.??

   
 
 автор: Giga   (28.09.2006 в 19:21)   письмо автору
 
   для: Giga   (26.09.2006 в 18:57)
 

Все готов конечный продукт, если кому интересно http://gwap.net.ru/midi/. Экономия места на хостинге 5-7 кратная!!!

   
Rambler's Top100
вверх

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