今日、dewen で誰かが php を使用して、ブラウザへのアクセスが完了した後に後続のコードを実行し続ける方法を尋ねているのを見かけました。、デモを書きました。php での実装は非常に簡単です。 -fpm 環境では、fastcgi_finish_request で十分です。 別のコンテナであれば、javascriptをクライアントに出力し、バックグラウンドで実行を続けることでしかジャンプできないと思います。
デモは以下の通りですが、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 中国語 Web サイトの他の関連記事を参照してください。