今天看到dewen裡面有人問,如何用php實作瀏覽器存取結束後繼續執行後續程式碼,我寫了個demo,在php-fpm環境下非常容易實現, fastcgi_finish_request即可。 如果是其它容器,我想只能透過輸出javascript到客戶端實現跳轉,然後後台繼續執行。
demo如下,php-fpm測試可用,apache php-cgi由於沒有環境而沒有測試。 (建議學習:PHP影片教學)
<?php // 你要跳转的url $url = "http://www.baidu.com/"; // 如果使用的是php-fpm if(function_exists('fastcgi_finish_request')){ header("Location: $url"); ob_flush(); flush(); fastcgi_finish_request(); // Apache ? }else{ header( 'Content-type: text/html; charset=utf-8' ); if(function_exists('apache_setenv'))apache_setenv('no-gzip', '1'); ini_set('zlib.output_compression', 0); ini_set('implicit_flush', 1); echo "<script>location='$url'</script>"; ob_flush(); flush(); } // 这里是模拟你的耗时逻辑 sleep(2); file_put_contents('/tmp/test.log', 'ok');
以上是PHP訪問結束如何繼續處理的詳細內容。更多資訊請關注PHP中文網其他相關文章!