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