Zip-Tool

Dieser Bereich dient dazu, eure Tricks und Erweiterungen vorzustellen, damit diese auch andere Anwender nutzen können. // This area can be used to publish your tricks and extensions to the APF to be used by other developers.
Markus
Beiträge: 4
Registriert: 23.08.2010, 19:20:06

Zip-Tool

Beitrag von Markus » 23.08.2010, 19:29:34

Guten Abend,
gibt es für das APF bereits einen Zip-Tool?
Da ich sonst etwas entwerfen werde.

Werden eigendlich die ganzen Tools immer geladen, oder erst bei gebrauch?

Megger
Beiträge: 1233
Registriert: 04.11.2008, 10:57:37

Re: Zip-Tool

Beitrag von Megger » 23.08.2010, 19:45:06

Hi

Nein es gibt meines Wissens noch kein Zip Tool für das APF. Was stellst du dir darunter vor? Was soll es können? Wie soll es bedient werden usw.?

Die Core Komponenten des Frameworks werden immer geladen, der Rest erst wenn der Entwickler diese über import() einbindet oder per __getServiceObject() ein Objekt erstellt.
Tutorial: Browsergame mit dem APF (Die ersten Parts handeln von Installation und Inbetriebnahme des APFs, deswegen sicherlich auch für alle Nicht-Browsergame-Programmierer interessant)

APF-Version
  • Entwicklung: 2.0
  • Produktiv: 1.15

Markus
Beiträge: 4
Registriert: 23.08.2010, 19:20:06

Re: Zip-Tool

Beitrag von Markus » 23.08.2010, 20:42:47

Archiv entpacken
- Einzelne Dateien Auslesen
- gesamtes Archiv entpacken und speichern
- Rückgabe der Verzeichnis / Datenstruktur

Archiv packen
- erweitern bereits existierende Archive / zusammenfügen
- hinzufügen einzelner Dateien
- hinzufügen von Verzeichnissen
- erstellen von Verzeichnissen
- Rückgabe der Archivdatei zum weiteren Verwenden (Download / Speichern)


Soweit wie ich gelesen habe, mach __getServiceObject() das selbe, wie die Funktion import()
Weslhalb gibt es dann 2 Funktionen?

Megger
Beiträge: 1233
Registriert: 04.11.2008, 10:57:37

Re: Zip-Tool

Beitrag von Megger » 23.08.2010, 20:47:43

Wenn du zum Beispiel extends benutzt, dann brauchst du import
Tutorial: Browsergame mit dem APF (Die ersten Parts handeln von Installation und Inbetriebnahme des APFs, deswegen sicherlich auch für alle Nicht-Browsergame-Programmierer interessant)

APF-Version
  • Entwicklung: 2.0
  • Produktiv: 1.15

Benutzeravatar
Screeze
Beiträge: 1920
Registriert: 05.08.2009, 09:49:04
Kontaktdaten:

Re: Zip-Tool

Beitrag von Screeze » 23.08.2010, 20:52:52

Soweit wie ich gelesen habe, mach __getServiceObject() das selbe, wie die Funktion import()
Weslhalb gibt es dann 2 Funktionen?
Nicht ganz richtig,
__getServiceObject() verwendet import() um vor dem erstellen eines objektes dieses zu laden, damit man das nicht selbst tun muss.

Markus
Beiträge: 4
Registriert: 23.08.2010, 19:20:06

Re: Zip-Tool

Beitrag von Markus » 23.08.2010, 22:18:46

Es gibt ja bereits die Klasse ZipArchive in php.
Je nach dem, ob es beim kompilieren hinzugefügt wurde, ist es verfügbar.
Mir selber ist es egal, ob ZipArchive zu benutze.
Sollte man dann ZipArchive erweitern (recursives hinzufügen von Dateien)
oder eine eigene Klasse erstellen?

ZipArchive dürfte ja performanter sein, da es ja als bytecode ausgeführt wird.

Benutzeravatar
dr.e.
Administrator
Beiträge: 4527
Registriert: 04.11.2007, 16:13:53

Re: Zip-Tool

Beitrag von dr.e. » 24.08.2010, 14:57:02

Hallo Markus,

herzlich willkommen im APF-Forum! :geek:
gibt es für das APF bereits einen Zip-Tool?
Kannst du kurz deinen Anwendungsfall beschreiben? Für derartige Operationen würde ich persönlich immer auf System-Tools wie gzip/gunzip/... zurückgreifen und diese entsprechend parametrisieren. Eine eigene ZIP-Implementierung in PHP halte ich - wie auch du - für zu unperformant. Vielleicht kann man ja für gzip/bzip/... eine APF-Wrapper-Klasse entwerfen. Macht sicher für den tools-Namespace Sinn.
Viele Grüße,
Christian

Markus
Beiträge: 4
Registriert: 23.08.2010, 19:20:06

Re: Zip-Tool

Beitrag von Markus » 24.08.2010, 16:48:36

Beispielsanwendung:
Ich möchte von mehreren Ordner nur einzelne Dateien zu einem Archiv Packen

Wobei die Frage ist, ob gzip performanter als ZipArchive

Benutzeravatar
dr.e.
Administrator
Beiträge: 4527
Registriert: 04.11.2007, 16:13:53

Re: Zip-Tool

Beitrag von dr.e. » 25.08.2010, 11:31:33

Hallo Markus,

dann würde ich tatsächlich eine Klasse schreiben, die per exec() oder system() die LINUX-Tools aufruft.
Viele Grüße,
Christian

Benutzeravatar
Manko10
Beiträge: 73
Registriert: 16.11.2009, 21:46:58
Kontaktdaten:

Re: Zip-Tool

Beitrag von Manko10 » 26.08.2010, 17:31:49

Naja, was heißt unperformant? Die Zip-Erweiterung von PHP greift auch nur auf zlib zu.
Visit Refining Linux for taking your Linux to the next level.

Benutzeravatar
dr.e.
Administrator
Beiträge: 4527
Registriert: 04.11.2007, 16:13:53

Re: Zip-Tool

Beitrag von dr.e. » 26.08.2010, 22:53:45

Danke für die Korrektur. :geek: Unperformant war vielleicht etwas unpräziese. Ich dachte da an die Flexibilität einer ZIP-Klasse auch andere ZIP- und Archiv-Formate per

Code: Alles auswählen

exec('tar -czf foo.tar.gz /foo/bar/*');
anwenden zu können. Das geht mit der ZIP-Lib sicher nicht so performant im Sinne von Geschwindigkeit und Implementierungs-Aufwand.
Viele Grüße,
Christian

Benutzeravatar
jwlighting
Beiträge: 466
Registriert: 14.07.2010, 14:23:58
Wohnort: LK Oldenburg
Kontaktdaten:

Re: Zip-Tool

Beitrag von jwlighting » 05.09.2010, 18:55:11

Archiv packen
- erweitern bereits existierende Archive / zusammenfügen
- hinzufügen einzelner Dateien
- hinzufügen von Verzeichnissen
- erstellen von Verzeichnissen
- Rückgabe der Archivdatei zum weiteren Verwenden (Download / Speichern)
Vielleicht auch direkt Textdateien erstellen, füllen und packen können, ohne diese vorher im FS ablegen zu müssen.

Just my 2 cents ;)

LG

Menschen irren - Politiker sind Menschen.
Für den Norddeutschen ist 1kW = 2 Pfund Schlick.

Well
Beiträge: 263
Registriert: 25.10.2009, 11:00:19
Wohnort: Beuren
Kontaktdaten:

Re: Zip-Tool

Beitrag von Well » 09.11.2010, 19:14:11

Ich hab mal versucht, sowas in der Richtung umzusetzen.

Die Verwendung gestaltet sich soweit wie folgt:

Code: Alles auswählen

$archive = $archiveMgr->openArchive('/var/www/.../', 'demo.tar'); // Klasse: ArchiveDirectory
$archiveDir = $archive->getDirectoryByName('muh');
$archiveMgr->extractDatas($archiveDir, '/dev/null'); // Extrahiert Dateien des Verzeichnis muh nach /dev/null
$archiveMgr->extractDatas($archiveDir->getFileByName('muh.txt'), '/dev/null'); // Extrahiert muh/muh.txt nach /dev/null

$archive->getDirectories(); // Liefert die Verzeichnisse in /var/www/.../demo.tar
$archive->getFiles(); // Liefert die Dateien in /var/www/.../demo.tar

$newFile = new ArchiveFile();
$newFile->setName('muh.txt');
$newFile->setDirectory($archive);
$archiveMgr->addDatas($newFile); // Fügt /var/www/.../muh.txt in Archiv /var/www/.../demo.tar ein

$newDirectory = new ArchiveDirectory();
$newDirectory->setName('muh');
$newDirectory->setDirectory($archive);
$archiveMgr->addDatas($newDirectory); // Fügt /var/www/.../muh in Archiv /var/www/.../demo.tar ein

$newArchive = new ArchiveDirectory();
$newArchive->setArchivePath('/var/www/');
$newArchive->setArchiveName('archive');
$newArchive->setArchiveFormat('tar');
$archiveMgr->addDatas($newArchives); // Erstellt das Archiv /var/www/archive.tar mit den Dateien von /var/www/
Ich würde zum Ansatz gerne eure Meinung hören... :)
Dateianhänge
archive.tar
(20 KiB) 57-mal heruntergeladen

Benutzeravatar
dr.e.
Administrator
Beiträge: 4527
Registriert: 04.11.2007, 16:13:53

Re: Zip-Tool

Beitrag von dr.e. » 09.11.2010, 22:45:37

Hallo Daniel,

die Implementierung gefällt mir. Was ich nicht ganz verstehe ist, dass du zwischen ArchivDirectory und ArchiveFile in der gewählten Art uhnterscheidest, wenn doch in Archiv schon sowas wie setDirectory() steht. Das bedeutet eine zirkuläre Abhängigkeit einer Unterklasse zu einer Oberklasse.
Viele Grüße,
Christian

Well
Beiträge: 263
Registriert: 25.10.2009, 11:00:19
Wohnort: Beuren
Kontaktdaten:

Re: Zip-Tool

Beitrag von Well » 14.11.2010, 01:47:24

Hallo Christian,

ich verstehe nicht so ganz, was du meinst...

Gedacht war, dass ArchiveDirectory ein Verzeichnis repräsentiert und ArchiveFile eine Datei. Dabei soll ein Objekt von ArchiveDirectory wissen, welche andere Verzeichnisse / Dateien sich in ihm befinden. Ebenso aber auch, in welchem Verzeichnis sich das Objekt/Verzeichnis befindet, dazu die setDirectory() Methode.

Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast