Hi Dennis!
Hört sich sehr gut an! Gibt nur ein Problem: Der "Client", der also der Server, der die Datei downloaded bzw. uploaded, ist ein Windows-Rechner mit Apache und PHP! Das wird dann wohl nichts mit dem pcntl-Funktionen....
Aber herzlichen Dank für den Tipp!
Hm... Wie dedlfix schon erwähnt hat, stößt du hier vielleicht auf das Problem, dass die Anzahl der Verbindungen, die ein Client zu ein- und demselben HTTP-Server erlaubt, beschränkt ist. Soweit ich das sehe, hast du zwar eigentlich nur 2 Verbindungen auf, aber möglicherweise liegt es auch ein einem Proxy, einem Router oder an einer Firewall dazwischen - was weiß ich ;-)
Also der Client ruft den Apache auf localhost auf... das ist also kein Problem, oder?
Jedenfalls hätte ich noch eine andere Idee, wie du das implementieren könntest. Eigentlich brauchst du den Clienten ja nicht so ewig lang an dieser einen AJAX Verbindung hocken lassen, wo der Client dann 3-4 Minuten nichts empfängt und nur warten darf.
OK!!! Da werde ich mal ein Test machen....
Nun läuft also der FTP-Transfer und es besteht keine Verbindung mehr zwischen Client und Server. Per Poll-Abfrage prüfst du dann ständig, wie groß die Datei schon ist (und zeigst dann nach Bedarf den Fortschrittsbalken an) und prüfst ebenso, ob der Hintergrundprozess noch am Laufen ist. Dazu einfach in der Prozessliste gucken (
ps -A
), die PID liegt dir beim Clienten oder in der Datenbank vor, je nachdem, wie du es implementiert hast. Ist der Hintergrundprozess dann beendet, so ist der FTP-Transfer auch zu Ende - du kannst dem Clienten sagen: Yuchuu, wir sind fertig! :)
Fast genauso habe ich es ja vor. Nur, dass ich die Verbindung leider nicht trennen kann... oder doch? Kann man eigentlich per PHP ein anderes Skript aufrufen und es einfach laufen lassen?!?!?
Gruß und danke
Daniel