2017-10-05 5 views
0

私はこのトピックは何度もカバーされている知っているが、SOのソリューションはいずれもclose a connection earlyで、例えば(PHP 7.xのために働くためにeverthingを思えません同じような質問のすべての同様の答えに同じことが起こります)。はPHP7(クライアントへの接続を閉じた後)、バックグラウンドでのPHPを続行(!)

私はPHPスクリプトの接続を早く終了したいので、ブラウザは長い実行中のタスクでは停止しません。私はPHP 5.xサーバのセットアップをしています。しかし、私はPHP 7.xの設定で動作させるのに苦労しています。

FastCGIでPHPを実行していないため、fastcgi_finish_request()を使用することはできません。また、コマンドライン指向のソリューション(execなど)はオプションではありません。また、pthreadがサーバーにインストールされていないため、スレッドはオプションではありません。

は長いテストの後、私はまだスクリプトを続行すると、サーバーの構成に応じて異なる「レシピ」を必要としながら、PHP 5.xの接続の適切な閉鎖を達成することが分かりました。一部のサーバーのために、これはトリックを行う場合は

header("Content-Length: 0"); 
ob_end_clean(); 
ob_end_flush(); 
echo(' '); 

その他の構成は、同じを達成するためにこれが必要になります。PHP 7.xので

header("Content-Encoding: none"); 
header("Content-Length: 0"); 
flush(); 

、しかし、私は右を思い付くことができませんでした"レシピ"。

他にも多くの運があったか、別の解決策を提案することができますか?

答えて

-2

register_shutdown_function()を試すことができます。ユーザー接続(コードの最後のステートメント)を閉じるときにこの関数を呼び出します。

<?php 
function shutdown() 
{ 
    // This is our shutdown function, in 
    // here we can do any last operations 
    // before the script is complete. 

    echo 'Script executed with success', PHP_EOL; 
} 

register_shutdown_function('shutdown'); 
?> 
+0

私は接続を閉じる必要がありますし、バックグラウンドの仕事をするトリックをしません。 –

関連する問題