PHP: Sitzung auf einer Seite verwenden, ohne das Laden der Sitzung auf einer anderen Seite zu beeinträchtigen
<p>Ich verwende CURL, um eine große Datei von einer externen URL herunterzuladen und auf meinem Server zu speichern. Das kann mehrere Minuten dauern. Während des Downloads verwende ich curl_setopt($ch, CURLOPT_PROGRESSFUNCTION,.., um eine anonyme Funktion auszuführen, die meine Variable $_SESSION['download_progress'] regelmäßig aktualisiert, um die aktuellen Download-Informationen zu erhalten. </p>
<p>All dies geschieht nun in der Datei upload.php, und während der Benutzer darauf wartet, dass die Datei heruntergeladen wird, verwende ich JavaScript, um die Seite progress.php anzufordern, die diesen einfachen Code enthält: </p>
<pre class="brush:php;toolbar:false;">session_start();
echo $_SESSION['download_progress'];</pre>
<p>Dadurch kann mein JavaScript-Code Informationen über den Fortschritt des Downloads anzeigen. </p>
<p>Aber es funktioniert nicht. </p>
<p>Die Seite „progress.php“ wird erst geladen, wenn „upload.php“ vollständig geladen ist (mit anderen Worten, zwei Seiten werden erst geladen, nachdem der Download der Datei abgeschlossen ist), was schlecht ist. session_start() verhindert irgendwie, dass die Seite „progress.php“ geladen wird. Ich verwende meinen eigenen Server (Apache PHP 5.4) und habe daher alle Administratorrechte. </p>
<p>Wie löse ich dieses Problem? Ich könnte einige unansehnliche Problemumgehungen verwenden, wie zum Beispiel das Schreiben der Download-Informationen in eine Textdatei statt in die Sitzungsvariable und dann die Verwendung von JavaScript, um diese Textdatei direkt zu lesen, aber das würde ich lieber nicht tun. Vielen Dank</p><p><br /></p>