したがって、これは言語固有の質問と同じくらい理論的な質問ですが、これを考慮してください。
バックグラウンドで実行される(PHPを使用して)かなりシステム集約的なプロセスを実行するためにPHPが必要ですexec();
が、ユーザーがその特定のページを離れると、プロセスは強制終了されます。
セッション変数やその他のサーバー側変数を使用していないため、デッドマンスイッチがこれを実装する簡単な方法であることにすぐに気付きました。
if($_SERVER['REQUEST_URI'] !== 'page_with_session.php'){
//Instead of 'session_destroy();' this would be used to kill said process
}
いずれにせよ、PHPでwhileループを実行したり、Pythonスクリプトでタイマーをリセットしたり、15秒ごとにスクリプトを再呼び出ししたりして、スクリプトが終了してプロセスを強制終了しないようにします。ただし、ユーザーがページを離れると、スクリプトは呼び出されますが、プロセスを強制終了する前にリセットすることはできません。
このアイデアにギャップのある穴はありますか?そうでない場合、PHP / JSでの実装はどのようになりますか?私がそれが機能しているのを見る順序は次のようになります:
- ページがユーザーによってヒットされた
<?php exec('killer.py') ?>
- killer.py:
- 20秒間聞きます-応答がない場合...
os.system('pkill process')
<?php while(true){sleep(15); exec('killer.py no_wait_dont');} ?>
皆さんの考えは大歓迎です!
石工