ServBay で PHP の Swoole モジュールを有効にする方法
ServBay は、開発者が必要とする多くのツールや拡張機能を標準搭載した強力なローカル Web 開発環境です。その中には、高性能な Swoole PHP 拡張も含まれています。Swoole は PHP 向けに設計された非同期・並列・高性能ネットワーク通信エンジンで、PHP アプリケーションのパフォーマンスや拡張性を大幅に向上させることができます。ここでは、ServBay で Swoole 拡張を簡単に有効化する手順を詳しくご紹介し、Swoole の強力な機能を活用した効率的な PHP アプリ・サービス構築をサポートします。
Swoole フレームワークについて
Swoole は、PHP に Node.js のような非同期 I/O、コルーチン、多プロセスといった高度な機能を提供するオープンソースプロジェクトです。Swoole を使うことで、PHP 開発者は従来の Web サーバ(Apache/Nginx + PHP-FPM)による同期ブロッキングモデルから解放され、以下のような常駐型メモリサービスを高性能で開発できます。
- 高性能 API ゲートウェイ
- リアルタイム通信アプリ (WebSocket)
- ゲームサーバー
- IoT(モノのインターネット)アプリ
- バックグラウンドサービスやタスク処理
Swoole の主な特徴
- 高性能: epoll/kqueue などのシステムコールを活用した非同期・ノンブロッキング I/O、多スレッド・マルチプロセス・コルーチンによる高スループット&低レイテンシー。
- 非同期&コルーチン: コルーチン機能により、非同期のコードを同期的に記述可能、開発効率を大幅に向上。
- 豊富なコンポーネント: HTTP、WebSocket、TCP、UDP サーバー&クライアント、コネクションプール、タイマー、プロセスマネージャーなど多機能を内蔵。
- 簡単な統合性: Laravel, Symfony, ThinkPHP など既存 PHP フレームワークとも連携可能。Swoole ネイティブアプリの構築にも最適。
ServBay における Swoole モジュールのサポート
ServBay には、各 PHP バージョン向けにあらかじめ Swoole 拡張がプリインストールされています。個別にダウンロードやコンパイル・インストールを行う必要はありません。ServBay が PHP 各バージョンに対応した互換 Swoole を自動管理します。
現在、ServBay では以下の PHP バージョンで Swoole 拡張の有効化が可能です。
- PHP 5.6
- PHP 7.x シリーズ
- PHP 8.x シリーズ(PHP 8.5 も含む)
選択した PHP バージョンに最適な Swoole 拡張が自動的に用意されます。
前提条件
Swoole モジュールの有効化前に、以下をご確認ください。
- ServBay のインストールと起動が正常に完了していること。
- ServBay 上で Swoole を使いたい PHP バージョンをインストールし、選択済みであること。
Swoole モジュール有効化の手順
ServBay では、グラフィカルユーザーインターフェース(GUI)による簡単操作と、設定ファイルを手動で編集する方法の2つが用意されています。直感的で便利な GUI での操作を推奨します。
ServBay の GUI から有効化(推奨)
GUI からの Swoole モジュール有効化は以下の通りです。
- ServBay の GUI を開きます。
- 左側のナビゲーションバーで 言語 (Languages) を選択。
- PHP をクリック。
- 右側の PHP バージョン一覧から、Swoole を有効化したい PHP バージョン(例:
PHP 8.3
)を探し、そのバージョンが選択状態(緑色の丸)であることを確認。 - 選択した PHP バージョンの右側にある 拡張 (Extensions) ボタンをクリック。
- ポップアップした拡張リストの中から swoole 拡張を見つける。
- swoole 拡張の左側スイッチをオン(緑色)に切り替え。
- 画面下部の 保存 (Save) または 適用 (Apply) ボタンをクリック。
- 拡張適用後、関連 PHP サービスの再起動を促すメッセージが表示されるので、再起動 (Restart) ボタンをクリック。
サービス再起動が完了すれば、Swoole モジュールが有効化されます。
設定ファイルを手動編集(上級者向け)
高度な設定や手動管理を希望する場合は、PHP の ini
ファイル編集で Swoole を有効化できます。
対応する PHP バージョンの
conf.d
設定ディレクトリを特定します。conf.d
ディレクトリでは追加 PHP 拡張の設定ファイル(.ini
)が格納されており、ServBay が自動的に読み込みます。例として PHP 8.3 の場合、通常は以下のパスです。/Applications/ServBay/etc/php/8.3/conf.d/
1※ ServBay のインストールパスをカスタマイズしている場合は、実際のパスに合わせて調整してください。
上記ディレクトリ内の
swoole.ini
ファイルを開きます。初期状態では、Swoole 有効化行がコメントアウト(
;
付き)されている場合があります。以下の箇所を探してください。ini[Swoole] ; Uncomment the following line to enable Swoole ;extension = swoole.so
1
2
3先頭の
;
記号を削除して、extension = swoole.so
行のコメントを解除します。ini[Swoole] ; Uncomment the following line to enable Swoole extension = swoole.so
1
2
3swoole.ini
ファイルを保存します。ServBay GUI のメイン画面またはサービス管理画面で、該当 PHP サービスの再起動ボタンをクリック。
再起動が完了すると、設定どおり Swoole モジュールが有効となります。
Swoole モジュール有効化の確認
phpinfo()
関数を使い、PHP 環境に Swoole モジュールがロードされているかを確認できます。
- ServBay 管理下サイトのいずれかのルートディレクトリ(例:
/Applications/ServBay/www/servbay.demo/public/
)で、phpinfo.php
というファイルを新規作成します。 phpinfo.php
に以下の内容を記述します。php<?php phpinfo(); ?>
1
2
3- ServBay で
servbay.demo
サイトが設定済みで、phpinfo.php
を含むディレクトリをルートに指定してあることを確認します。 - ブラウザで該当 URL(例:
https://servbay.demo/phpinfo.php
)にアクセス。 - 表示された
phpinfo
ページで下方向にスクロール、またはブラウザ検索(Ctrl+F/Cmd+F)で "swoole" を検索。
Swoole のバージョンや設定項目などが表示されていれば、Swoole モジュールが成功裏に有効化されています。
図: phpinfoページで Swoole 情報を確認する例
Swoole の利用例
Swoole モジュールが有効になったら、すぐに Swoole アプリを書き始めることが可能です。以下は Swoole を使ったシンプルな HTTP サーバー作成例です。
サンプルコード:シンプルな Swoole HTTP サーバーの作成
プロジェクトディレクトリの作成 開発ディレクトリ(たとえば
/Applications/ServBay/www/
)で新たにプロジェクトディレクトリmy-swoole-app
を作成し、その配下にpublic
ディレクトリを設置します。bashcd /Applications/ServBay/www/ mkdir my-swoole-app cd my-swoole-app mkdir public
1
2
3
4エントリファイル
public/index.php
を作成php<?php require __DIR__ . '/../vendor/autoload.php'; // 他の依存パッケージを Composer で導入していれば use Swoole\Http\Server; use Swoole\Http\Request; use Swoole\Http\Response; // HTTP サーバインスタンスを作成し、ローカルのすべての IP (0.0.0.0) の 9501 番ポートでリッスン $server = new Server("0.0.0.0", 9501); // サーバ設定 (オプション) // $server->set([ // 'worker_num' => 4, // ワーカープロセス数 // 'daemonize' => false, // デーモンとして実行するか // ]); // リクエストイベントをリッスン $server->on("request", function (Request $request, Response $response) { // レスポンスヘッダーを設定 $response->header("Content-Type", "text/plain"); // レスポンス本文を設定 $response->end("Hello ServBay with Swoole!"); }); // サーバ起動イベントをリッスン(オプション) $server->on("start", function (Server $server) { echo "Swoole http server is started at http://0.0.0.0:9501\n"; }); // サーバを起動 $server->start(); echo "Swoole server stopped.\n"; // この行はサーバ停止後にのみ実行されます
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35注:
require __DIR__ . '/../vendor/autoload.php';
は Swoole 関連の追加ライブラリ(例:swoole/ide-helper
や Swoole フレームワーク等)を Composer 導入した場合のみ必要です。純粋な Swoole コードのみの場合、この行は削除してもかまいません。コマンドラインでサーバーを起動 ServBay のターミナル機能、またはシステム標準のターミナルでプロジェクトディレクトリ(例:
/Applications/ServBay/www/my-swoole-app/
)に移動します。現在の PHP バージョンが ServBay 管理下のものか確認(which php
でパスをチェック、または ServBay のターミナル利用推奨)。次のコマンドで Swoole サーバーを起動します。
shphp public/index.php
1正常に起動した場合、"Swoole http server is started at http://0.0.0.0:9501" といったメッセージがターミナルに表示されます。
図: ターミナルで Swoole を起動
動作確認 サーバ起動後、ブラウザで
http://localhost:9501
にアクセスしてください。"Hello ServBay with Swoole!" という画面が表示されれば成功です。Swoole サーバーを停止するには、ターミナルで
Ctrl + C
を押してください。
注意事項
- 起動方法について: 上記サンプルはコマンドラインから直接 Swoole サーバーを起動する方法です。これは常駐メモリサービス構築に最適です。Laravel/Symfony/WordPress など従来型 Web アプリは、通常 PHP-FPM モードで Caddy や Nginx 経由で動作します。Swoole 環境でこれらを動かしたい場合は、Hyperf や swoole-laravel など専用フレームワークの起動スクリプトを利用するのが一般的で、上記例同様の独立プロセス動作する場合が多いです。
- ポートの競合: Swoole サーバーがリッスンするポート(例: 9501)が他のアプリで使用されていないことを確認してください。
- エラーログ: Swoole のエラー出力やログは通常、起動したターミナルへ直接出力されるか、設定によってはログファイルへ出力されます。
よくある質問(FAQ)
Q: ServBay GUI で Swoole を有効化したのに、phpinfo()
で Swoole 情報が表示されません。どうすれば?
A: 以下をご確認ください。
- 正しい PHP バージョンの
phpinfo()
を参照しているか確認してください。ServBay では複数 PHP バージョンが同時起動している場合もあるため、アクセスしたサイトやコマンドラインの PHP が Swoole 有効化バージョンと一致しているかご確認ください。 - ServBay GUI で「保存」&対象 PHP サービスの再起動が正常に完了しているか確認してください。
swoole.ini
を手動編集した場合は、ファイルのパス・ファイル名・extension = swoole.so
の記載やコメント有無をチェック。
Q: Swoole サンプル実行時に Class 'Swoole\Http\Server' not found
というエラーが出ます。なぜ?
A: これは Swoole 拡張が現在の PHP 環境で正しく読み込まれていないケースです。上記手順どおり Swoole の有効化を再確認してください。また、php public/index.php
コマンド実行時、ServBay 管理&Swoole 有効化済みの PHP が利用されているか確認しましょう。php -m | grep swoole
コマンドで、コマンドライン環境に Swoole モジュールが組み込まれているか瞬時に確認できます。
まとめ
ServBay を使えば、PHP の Swoole 拡張を誰でも簡単に有効化できます。直感的な GUI 操作はもちろん、手動ファイル編集による詳細管理も可能です。対象の PHP バージョンへ迅速に Swoole を読み込み、高性能・非同期 Web アプリ開発を今すぐスタートしましょう。Swoole の強力な機能を活用すれば、より高速・高並列な PHP サービスを容易に構築でき、PHP のポテンシャルを最大限に引き出せます。ServBay は環境管理をシンプルにし、開発者がコード実装により集中できる最適な開発体験を提供します。