Zend Platform Download Server Details
Mit dem Zend Download Server kann das Senden großer Dateien von Apache per Offload erfolgen und so freie Kapazität für die Abwicklung komplexerer PHP-basierter Anfragen geschaffen werden. Das heißt, mit dem Zend Download Server kann eine zehnfache Steigerung für gleichzeitige Datei-Downloads erzielt werden!
Für den Zend Download Server stehen zwei Betriebsmodi zur Verfügung: „Manuell“ und „Transparent“. Im Modus „Manuell“ rufen Sie die PHP-Funktion zend_send_file() manuell auf und geben an sie den Namen der Datei weiter, die heruntergeladen werden soll. Durch das Aufrufen von zend_send_file() wird der Datei-Download umgehend gestartet und die Ausführung Ihres PHP-Skripts beendet.
Im Modus „Transparent“ konfigurieren Sie vorab die Dateien, die über den Zend Download Server heruntergeladen werden sollen, indem Sie diese in der Konfigurationsdatei Ihres Webservers (beispielsweise durch Hinzufügen von „AddType application/x-httpd-php .mpeg“) zuordnen und die Dateien vom Typ MIME angeben, die in der Datei zend_mime_types.ini verarbeitet werden. Sie können auch die Anweisung min_file_size konfigurieren (über die Verwaltungs-UI des Zend Download Servers). In diesem Fall würden die Dateien, für die Sie angegeben haben, dass sie größer als min_file_size sind, automatisch verarbeitet werden.
So funktioniert der Zend Download Server
Der Zend Download Server stellt im Wesentlichen einen unabhängigen Prozess dar, der beim Starten von Zend Platform (beim Apache-Start) initiiert wird. In der Regel wird über eine Anfrage von einem Webclient das Herunterladen einer Datei vom Webserver angefordert, und der Webserver verarbeitet die Anfrage selbst. Dieser Ablauf ist in der nachfolgenden Grafik dargestellt:
Nehmen wir nun an, eine neue Anfrage für das Herunterladen einer Datei über den Zend Download Server geht ein (entweder über einen expliziten Aufruf der API-Funktion oder über die Einstellungen des Modus „Transparent“). Dadurch erhält Apache die Anfrage. Anstatt diese jedoch zu verarbeiten (was Apache-Ressourcen verbrauchen würde), gibt die Software den Dateideskriptor der Verbindung über eine Pipe (Methode der Interprozesskommunikation) an den Daemon des Zend Download Servers weiter. Der Zend Download Server antwortet mit „SELECT“, einem im Grunde für asynchrone E/A-Operationen verwendeten Systembefehl. Der SELECT-Systembefehl ruht, bis ein bestimmter Umstand für einen Dateideskriptor, wie eine Zeitüberschreitung, gegeben ist oder ein Signal empfangen wird. In unserem Fall untersucht der Zend Download Server den Rückgabeparameter des SELECT-Befehls, ermittelt, welcher Dateideskriptor geändert wurde, und verarbeitet die Anfrage dann über einen Socket mit arbiträrem Port (ein Port >1024 wird gewählt). Auf diese Weise wird die Datei-Download-Aufgabe an einen anderen Prozess umgeleitet, durch den die Datei über einen dedizierten Socket ohne Beeinträchtigung des Apache-Prozesses heruntergeladen wird. Dieser Ablauf ist in der nachfolgenden Grafik dargestellt:
Sie können auch die Höchstmenge gleichzeitiger Clients über den Zend Download Server festlegen sowie weitere Einstellungen über die UI der Funktion vornehmen. Weitere Informationen über den Zend Download Server finden Sie in der Zend Download Server White Paper.



