Fórum Root.cz
Hlavní témata => Vývoj => Téma založeno: trampino 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/
-
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)
-
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.
- http://en.php.net/manual/en/book.zip.php, http://php.net/manual/en/ref.zip.php (prvni komentar od: shadowbranch at gmail dot com 30-Sep-2011 05:40)
- http://en.php.net/manual/en/ref.filesystem.php - fopen + fread + fclose, file_get_contents, ...
- http://en.php.net/manual/en/function.preg-replace.php
- http://en.php.net/manual/en/function.fwrite.php
- viz 1. bod
- http://en.php.net/manual/en/function.unlink.php
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...
-
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.
-
^ => vytvorit na to ramdisk, nebo zahlti kompletne vsechny workery
-
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.