3

開始時に PHP スクリプトを実行し、WebSocket を使用して継続的にイベントをリッスンし、接続をログに記録する Wordpress プラグインを作成しています。

例えば

shell_exec('php restserver.php >restserver.log 2>&1 &');

上記のスクリプトは、Wordpress API の外部にあります。execorを使用shell_execすることは極端な方法であることを認識しています(多くの場合、使い古された質問への答えです)。

プラグインが無効になっている場合はそれを強制終了し、プラグインが再起動された場合はスクリプトを再起動しないように、restserver.php プロセス ID を記録することができました。

要するに...

  1. wordpress に依存しないバックグラウンド php プロセスを実行するより良い方法はありますか?
  2. プラグインの無効化イベントを検出し、この前に kill プロセス コマンドを起動する「ベスト プラクティス」の方法はありますか?

編集: 質問番号 2 の秘密は、register_deactivation_hook()afterを使用しregister_activation_hook()てクラスまたは魔法を作成する関数を登録することにあるようです。

とにかくそれは私のために働いた。正しい方法の使用に関する詳細情報exec()はいつでも歓迎します。

4

1 に答える 1

0

さまざまなタスクの並列実行用に設計されたGearManと呼ばれる UNIX サーバーがあります。ワーカーを起動し、バックグラウンド ジョブを含むその実行を監視できる PHP 用のクライアント ライブラリがあります。したがって、これは (エレガントな) 方法の 1 つですが、GearMan サーバーとクライアント ライブラリをインストールする必要があり、これは管理アクセスを意味します。

これを行う別の簡単な方法は、このためのcronjobを追加することです。これには、cronjob ファイルへの書き込みアクセスと、cronjob デーモンに新しい設定の読み込みを要求するアクセスのみが必要です。タスクの目的で cronjob から PHP を起動することは、exec呼び出しから起動するよりも理にかなっています。

于 2012-08-30T09:17:06.793 に答える