Supervisorを使用して PHP スクリプトを並列化しています。私のスクリプトがデータベースから特定の応答を受け取ると、コマンドを実行して、Supervisord デーモンの制御下にあるすべてのプロセスを停止しますsupervisorctl
。コマンドは次のとおりです。
// gracefully stop all processes in supervisor's group called processes
$cmd = 'sudo /usr/bin/supervisorctl stop processes:*';
exec( $cmd, $outputs );
問題は、このコマンドが、スーパーバイザーの制御下にある PHP スクリプト内からトリガーされた場合、何の影響もないように見えることです。なんで?
スーパーバイザー内で実行されているこのプロセス グループを開始し、コマンド ラインから直接スクリプトの別のインスタンスをトリガーすると、すべてのスーパーバイザー プロセスが停止します。
何が起こっている?デーモン化されたPHPスクリプトはexec()
シェルコマンドではありませんか?