Außerdem wurde das Streaming optimiert, indem anstelle des selbstgeschriebenen Codes PEAR::HTTP_Download eingebunden wurde. Das Ergebnis ist ein stabiler Download-Prozess auch bei großen Dateien, der konstant hohe Transferraten ermöglicht.
require_once("HTTP/Download.php");
function send_file($path, $sendmime) {
$dl = &new HTTP_Download();
$dl->setFile($path);
$dl->setContentType($sendmime);
$dl->setContentDisposition(HTTP_DOWNLOAD_ATTACHMENT, basename($path));
return $dl->send(false);
}
Listing 5
Nachdem die Zip-Erstellung auf die PHP5-internen Funktionen umgestellt wurde, war Performance kein Thema mehr – jedoch die Integrität der erstellten Archive. Bei mehr als 500 Dateien pro Zip-Datei enthielt das Archiv nämlich kein Verzeichnis mehr, der Benutzer lud eine „leere“ Datei herunter. Deshalb war es notwendig, mehrere Archive zu erstellen, wenn mehr als 500 Dateien zum Download angefordert wurden. Dem Benutzer werden in diesem Fall mehrere Links zu den erzeugten Archiven angezeigt. Die Fortschrittsanzeige verwendet die in der Datenbank gepufferten Dateigrößen und berechnet daraus den Fertigstellungsgrad.
Damit der Festplattenspeicher des Webservers trotz der Erstellung vieler Zip-Archive täglich nicht vor temporären Dateien überläuft, werden diese regelmäßig gelöscht. Dazu wird der TYPO3-Scheduler „Gabriel“ [3] verwendet, der acht Stunden nach der Zip-Erstellung alte Dateien entfernt:
require_once(t3lib_extMgm::extPath('gabriel').'class.tx_gabriel_event.php');
$notification = t3lib_div::getUserObj('EXT:[...]/class.tx_[...]_scheduler.php:tx_[...]_scheduler');
$notification->registerSingleExecution(time()+8*3600);
$gabriel = t3lib_div::getUserObj('EXT:gabriel/class.tx_gabriel.php:&tx_gabriel');
$gabriel->addEvent($notification,'scheduled cleanup @' .time());
Listing 6
Wie verwaltet man eine Million?
Nachdem das Frontend nun schnell und stabil lief, wurde die Verwaltung der Dateien angegangen. Weil die Installationspakete, Patches etc. in der Produktentwicklung zusammengestellt wurden, lagen die Informationen fast seit Beginn als Excel-Tabellen vor. Diese wurden etwa vierteljährlich vorwiegend manuell in CSV-Dateien exportiert und dann in die Datenbank geladen. Der Hauptaufwand bestand darin, Listeneinträge aufzulösen, wenn beispielsweise als Sprache „English, German“ angegeben war.




![TYPO3: 10 Jahre in 60 Sekunden zusammengefasst [Video]](http://t3n.de/uploads/t3n-news-post-361575_typo3_medium.jpg)


2 Antworten
von Felix Nagel 30.09.2009 (11:25Uhr) 1.
Die Extension hört sich interessant an -- aber veröffntlicht wurde sie anscheinend nicht?
Grüße
von Norman Seibert 05.10.2009 (09:48Uhr) 2.
Stimmt Felix, die Erweiterung ist nicht öffentlich.