PHP: nahrazení řetězce v souborech v zip

trampino

PHP: nahrazení řetězce v souborech v zip
« kdy: 15. 08. 2012, 17:19:16 »
Dokázal by jste mi prosím někdo pomoct s tímhle:
na serveru v adresáři /download/ mám uložený zazipovaný soubor archiv.abc tu příponu abc to má schválně. V souboru jsou dva adresáře a v každém z nich několik souborů. Jeden z těch adresářů se jmenuje ZALOZKY

Potřebuji PHP script, který udělá následující
Na webu je odkaz. Po té co uživatel na odkaz klikne tak script
1) rozbalí ten archivní subor do adresáře /temp/ do podadresáře 123_archiv (název adresáře se skládá z řetězce 123, znaku _ a názvu rozbalovaného souboru)
2) Postupně nad každým souborem umístěným v adresáři ZALOZKY provede následující akce
2.1) Otevře soubor
2.2) Vyhledá v něm první výskyt řetězce KLM a nahradí ho řetězcem XYZ
2.3) Uloží novou upravenou verzi souboru zpět do adresáře ZALOZKY
2) Po úpravě všech souborů v adresáři ZALOZKY zazipuje obsah adresare 123_archiv do souboru 123_archiv.abc
4) Smaže podadresář 123_archiv z adresáře /temp/
5) Nabídne soubor 123_archiv.abc uživateli ke stažení

jestli je to v PHP realizovatelné tak ještě 6) po té co si uživatel soubor stáhne, smaže soubor 123_archiv.abc z adresáře /temp/
« Poslední změna: 15. 08. 2012, 22:01:37 od Petr Krčmář »


DK

Re:PHP - nahrazení řetězce v souborech umístěných v zip archivu
« Odpověď #1 kdy: 15. 08. 2012, 17:34:15 »
samozrejme je to v php realizovatelne, jako v kazdem jinem jazyce


nicmene to bude dlouho trvat, takze to bud resit konzolove, nebo hodne zvednout max_execution_time (tech 30 sekund tomu nebude stacit, zavisi na velikosti souboru)

mamlasek

Re:PHP - nahrazení řetězce v souborech umístěných v zip archivu
« Odpověď #2 kdy: 15. 08. 2012, 17:39:21 »
Jestli jsem to pochopil spravne, nemelo by jit o zadnou vedu - jen o postup volani jiz existujicich funkci. PHP ma krasnou dokumentaci - www.php.net.


Nicmene bych se bal spise toho, jak toto cele zpracovat v jednom dotazu. Pokud pujde o nejake male archivy, tak proc ne, pokud ale pujde o vice dat, resil bych to nejakou frontou a zpracovanim na serveru davkou...

vasek

Re:PHP - nahrazení řetězce v souborech umístěných v zip archivu
« Odpověď #3 kdy: 15. 08. 2012, 21:27:06 »
Tak ten postup s rozbalováním a znovuukládáním mi přijde špatný. Správně by to mělo být někde rozbalené. Potom to načíst do paměti (pokud to není moc velké - pokud je, tak se to online stejně dělat nedá), v paměti upravit soubory a zazipované nabídnout uživateli. Nic neukládat na disk.

DK

Re:PHP: nahrazení řetězce v souborech v zip
« Odpověď #4 kdy: 15. 08. 2012, 22:03:47 »
^ => vytvorit na to ramdisk, nebo zahlti kompletne vsechny workery


trampino

Re:PHP: nahrazení řetězce v souborech v zip
« Odpověď #5 kdy: 16. 08. 2012, 07:15:17 »
Měl by to být script, který do souboru ePUB (což je v podstatě zazipovaný adresář se sadou XML souborů  kde co soubor to jedna kapitola knihy,) dostane do každého toho XML souboru (nebo alespoň do jednoho z nich, který reprezentuje např první kapitolu) na konkrétní místo, které je v každém tom xml souboru stejné, informaci o uživateli, který si ten soubor z webu stahuje.
Jde tedy o řešení pro vložení sociálního DRM do ePUB souboru a to pomocí PHP.