2016-12-15 5 views
-2

Auf PHP im mit curl oder file_get_contents, um eine große Datei herunterladen dauert es ca. 30sec bis 10min und dann speichern sie auf dem Server, aber während der Download-Zeit kann ich nicht nach einer neuen Anfrage fragen, Ich versuche eine neue PHP-Anfrage, aber es wurde nicht geladen, bis das letzte PHP-Skript/Download vorbei ist.PHP Curl + Mysql Block neue Anfrage

Wenn ich die gleiche Website auf einem anderen Web Explorer öffne, funktioniert es normalerweise.

Thx

+0

Ihr Problem besteht aus zwei Teilen, von denen keiner sehr stark ist. Erstens, Verarbeitung im Hintergrund nach dem Zurücksenden einer Nachricht an den Browser: http://stackoverflow.com/questions/15273570/continue-processing-php-after-sending-http-response. Der zweite Teil des Problems informiert Ihren Client, wenn die Verarbeitung abgeschlossen ist. Mit PHP bedeutet das wahrscheinlich, dass der Server abgefragt wird, um zu sehen, ob die Datei bereit ist. Wenn Javascript eine Option ist, können Sie diese verwenden, um die Dateianforderung zu stellen, ohne den regulären Betrieb des Browsers zu blockieren. – Jerry

+0

Verwendet Ihr Skript Sitzungsvariablen? Standardmäßig kann immer nur ein Skript in derselben Sitzung ausgeführt werden. Sie müssen die Sitzung schließen, bevor Sie die lange "curl" -Anforderung ausführen, damit ein anderes Skript dieselbe Sitzung verwenden kann. – Barmar

+0

yeah ich benutze Sitzungen, PHP-Sitzungen –

Antwort

0

Die PHP-Sitzung ist gesperrt, um gleichzeitige Schreibvorgänge zu verhindern. Sie müssen die Sitzung schließen, um ein neues Skript zu starten, das Sitzungen verwendet.

Ich benutze session_write_close, um es zu schließen, nachdem ich mich erinnere oder die Daten, die ich brauchte aktualisieren.

Thx!