ホームページ >バックエンド開発 >PHPチュートリアル >PHP 開発者向けスーパーバイザー ガイド

PHP 開発者向けスーパーバイザー ガイド

Patricia Arquette
Patricia Arquetteオリジナル
2025-01-20 12:03:12991ブラウズ

Supervisor Guide for PHP Developers

スーパーバイザー: PHP アプリケーション向けの堅牢なプロセス制御システム

Supervisor は、バックグラウンド プロセスを管理するための強力なツールであり、長時間実行されるタスク、キュー ワーカー、およびその他のバックグラウンド ジョブを処理する PHP 開発者にとっては必需品です。 このガイドでは、スーパーバイザーのセットアップ、PHP アプリケーションの統合、最適なパフォーマンスのための包括的な構成について詳しく説明します。

スーパーバイザーを理解する

スーパーバイザーは、次のようなバックグラウンド タスクの管理に優れています。

  • クラッシュしたプロセスを自動的に再起動します。
  • 監視を容易にする集中ログ。
  • コマンドラインと Web インターフェースの制御。

以下を採用する PHP プロジェクトにとって特に有益です。

  • Laravel は非同期処理のためにキューを作成します。
  • WebSocket サーバーなどの永続プロセス。
  • cron ジョブに似たスケジュールされたタスク。

スーパーバイザーのインストール

Ubuntu/Debian:

<code class="language-bash">sudo apt update
sudo apt install supervisor</code>

CentOS/RedHat:

<code class="language-bash">sudo yum install epel-release
sudo yum install supervisor</code>

インストール後、スーパーバイザーをアクティブ化して有効にします:

<code class="language-bash">sudo systemctl start supervisord
sudo systemctl enable supervisord</code>

スーパーバイザー構成

スーパーバイザーは、構成ファイル (通常は /etc/supervisor/conf.d/ にあります) を利用して、個々のプログラムを管理します。

基本的な構成例:

次の内容で /etc/supervisor/conf.d/my_php_worker.conf を作成します:

<code class="language-ini">[program:my_php_worker]
command=php /path/to/worker.php
autostart=true
autorestart=true
stderr_logfile=/var/log/my_php_worker.err.log
stdout_logfile=/var/log/my_php_worker.out.log</code>

--tries=3 オプション (command ディレクティブ内) は、失敗するまでの再起動試行を 3 回に制限します。

構成を適用します:

<code class="language-bash">sudo supervisorctl reread
sudo supervisorctl update
sudo supervisorctl start my_php_worker:*</code>

詳細な構成オプション

スーパーバイザー設定オプションの詳細な内訳は次のとおりです。

  1. command: 実行するコマンド。 例: command=php /path/to/worker.php

  2. autostart: スーパーバイザーを使用してプログラムを自動的に開始します。値: true (デフォルト)、false。例: autostart=true

  3. autorestart: 失敗時に自動的に再起動します。値: truefalseunexpected。例: autorestart=unexpected

  4. startsecs: プロセスが開始されたとみなされるまでの最小実行時間 (秒)。デフォルト: 1。例: startsecs=5

  5. startretries: 失敗するまでの再起動の最大試行回数。デフォルト: 3。例: startretries=5

  6. exitcodes: 再起動を妨げる許容可能な終了コード。デフォルト: 0、2。例: exitcodes=0,1

  7. stopwaitsecs: 強制終了する前に正常なシャットダウンを待機する時間 (秒)。デフォルト: 10。例: stopwaitsecs=20

  8. redirect_stderr: 標準エラーを標準出力にリダイレクトします。値: truefalse (デフォルト)。例: redirect_stderr=true

  9. stdout_logfile / stderr_logfile: 標準出力およびエラーのログ ファイル パス。例: stdout_logfile=/var/log/my_program.out.log

  10. stdout_logfile_maxbytes / stderr_logfile_maxbytes: ローテーション前の最大ログ ファイル サイズ。デフォルト: 50MB。例: stdout_logfile_maxbytes=10MB

  11. stdout_logfile_backups / stderr_logfile_backups: 保持するローテーションされたログ ファイルの数。デフォルト: 10。例: stdout_logfile_backups=3

  12. user: プログラムを実行するシステム ユーザー。例: user=www-data

  13. environment: 環境変数。例: environment=APP_ENV="production",DB_HOST="localhost"

  14. priority: 開始順序 (低い値が最初に開始されます)。デフォルト: 999。例: priority=100

  15. directory: 作業ディレクトリ。例: directory=/path/to/your/app

  16. stopasgroup: プロセスとその子プロセスに停止シグナルを送信します。値: truefalse (デフォルト)。例: stopasgroup=true

  17. killasgroup: stopwaitsecs の後にプロセスとその子プロセスを強制的に強制終了します。値: truefalse (デフォルト)。例: killasgroup=true

PHP 固有の使用例

  1. Laravel キュー: 信頼性の高いジョブ処理のために queue:work コマンドを管理します。

    <code class="language-bash">sudo apt update
    sudo apt install supervisor</code>
  2. スケジュールされたタスク: より堅牢なスケジュールされたスクリプト実行のために cron を置き換えます。

    <code class="language-bash">sudo yum install epel-release
    sudo yum install supervisor</code>
  3. 長時間実行スクリプト: WebSocket サーバーなどの永続的なスクリプトを管理します。

    <code class="language-bash">sudo systemctl start supervisord
    sudo systemctl enable supervisord</code>

スーパーバイザーの起動の自動化

システム起動時にスーパーバイザーが起動することを確認します:

  1. スーパーバイザー サービスを有効にする: sudo systemctl enable supervisord

  2. サービスを開始します (必要な場合): sudo systemctl start supervisord

ベストプラクティス

  • わかりやすいプログラム名を使用してください。
  • stdout_logfile_maxbytesstdout_logfile_backups を使用してログ ローテーションを構成します。
  • environment ディレクティブを使用して変数を管理します。

結論

Supervisor は、バックグラウンド プロセスを管理する PHP 開発者にとって不可欠なツールです。このガイドでは、インストール、構成、実際のアプリケーションについて包括的に紹介し、PHP プロジェクトの信頼性が高く効率的なタスク管理を保証します。

以上がPHP 開発者向けスーパーバイザー ガイドの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。