Header wird nicht funktionieren (sie sind Header, so kommen sie erste)
Ich weiß nicht von irgendeiner Weise die HTTP-Verbindung zu schließen, ohne das Skript beendet wird, obwohl ich glaube, Es gibt einen obskuren Weg, es zu tun.
Wenn Sie uns mitteilen, was Sie nach der Anfrage tun möchten, helfen Sie uns, bessere Vorschläge zu machen.
Aber im Allgemeinen, würde ich das über eine der folgenden denken:
1) Führen Sie einige einfache Befehlszeilenskript (mit exec()), der wie folgt aussieht:
#!/bin/sh
php myscript.php <arg1> <arg2> .. <argN> &
Dann Kick dass von Ihrem http gebundenen Skript ab wie:
<?PHP
exec('/path/to/my/script.sh');
?>
Oder:
2) schreiben anothe r-Programm (möglicherweise ein kontinuierlich laufender Daemon oder einfach nur ein Skript, das so oft erstellt wird) und herausfinden, wie Ihr In-Anfrage-Code Anweisungen übergeben kann. Sie könnten eine Datenbanktabelle haben, die die Arbeit in die Warteschlange stellt, oder versuchen, sie mit einer flachen Datei von irgendeiner Art arbeiten zu lassen. Sie könnten auch Ihr webbasiertes Skript einen Befehlszeilenbefehl aufrufen lassen, der dazu führt, dass Ihr nicht angefordertes Skript einige Aufgaben in die Warteschlange stellt.
Am Ende des Tages, Sie nicht wollen Ihr Skript nach der http-Anfrage weiter ausführen. Angenommen, Sie verwenden mod_php, bedeutet das, dass Sie einen Apache-Prozess binden, bis das Skript beendet wird.
+1 Brillante Lösung! Danke für die Weisheit, die alle Reiter des Königs nicht herausfinden konnten. –
Wirklich netter Hack von Milan. Aber ich muss mich fragen, was Sie tun, das erfordert, einen Web-Server-Prozess zu kauen, nachdem die Web-Anfrage vorbei ist (aus der Sicht des Kunden). Ich hoffe natürlich, dass diese Abscheulichkeit wird nicht sehr stark skalieren! – timdev
Identisch (zum Buchstaben) zu dem Code in der PHP-Handbuchseite, die mit in Lukmans Antwort verbunden ist, die zwei Tage zuvor gepostet wurde. – GZipp