PHP: So verwenden Sie die Sitzung auf einer Seite, während eine andere Seite mit Sitzung geladen wird

Ich verwende CURL, um eine große Datei von einer externen URL herunterzuladen und auf meinem Server zu speichern. Dies kann einige Minuten dauern. Während der Download ausgeführt wird, verwende ich curl_setopt ($ ch, CURLOPT_PROGRESSFUNCTION, .., um eine anonyme Funktion auszuführen, die meine Variable $ _SESSION ['download_progress'] regelmäßig mit den aktuellen Download-Informationen aktualisiert.

Jetzt geschieht dies alles in der upload.php-Datei und während der Benutzer auf den Download der Datei wartet, benutze ich Javascript, um die progress.php-Seite anzufordern, die den folgenden einfachen Code enthält:

session_start();
echo $_SESSION['download_progress'];

Dadurch kann mein Javascript-Code Informationen über den Download-Fortschritt anzeigen.

Außer es funktioniert nicht.

Die Seite "progress.php" wird erst geladen, wenn die Datei "upload.php" vollständig geladen wurde (dh beide Seiten werden erst geladen, nachdem der Download der Datei abgeschlossen ist). Dies ist nicht gut. Die session_start () blockiert irgendwie das Laden der "progress.php" -Seite. Ich benutze meinen eigenen Server (Apache + PHP 5.4), damit ich alle Administratorrechte habe.

Wie kann ich dieses Problem lösen? Ich könnte eine hässliche Umgehung gebrauchen, z. B. die Download-Informationen in eine Textdatei anstatt in eine Sitzungsvariable schreiben und dann das Javascript verwenden, um diese Textdatei direkt zu lesen, aber ich würde das lieber nicht tun.

Vielen Dank

Antworten auf die Frage(1)

Ihre Antwort auf die Frage