PHP簡単高速化!Swooleインストールの全ステップ | ジコログ

PHP簡単高速化!Swooleインストールの全ステップ

PHP簡単高速化!Swooleインストールの全ステップ サーバー

SwooleはPHPのパフォーマンスを劇的に向上させる拡張機能です。
この記事では、まずシステム要件を確認します。

次に、インストールプロセスを詳しく説明します。
また、php.iniへの追記方法についても触れます。

最後に、Swooleの動作確認方法をご紹介します。
これらのステップを通じて、Swooleの力を最大限に活用しましょう。

本記事の内容

  • Swooleのシステム要件
  • Swooleのインストール
  • php.iniへの追記
  • Swooleの動作確認

それでは、上記に沿って解説していきます。

Swooleのシステム要件

現時点(2023年11月末)でのSwooleの最新バージョンは、5.1.1となります。
この最新バージョンは、2023年11月26日にリリースされています。

Swooleのシステム要件でのポイントは、次の4つです。

  • サポートOS
  • PHPバージョン
  • PECLコマンド
  • phpizeコマンド

それぞれを以下で確認していきます。

サポートOS

サポートOSに関しては、以下となります。

  • Linux
  • mac OS

基本的には、Windowsはサポート外となっています。
WSLや仮想OSを用いれば、Windows上でも検証は可能です。

PHPバージョン

PHP 7.2.0以降と記載されています。
そして、バージョンが高いほどパフォーマンスが向上するということです。

PECLコマンド

PECL(ピクル)コマンドを使って、Swooleのインストールを行います。
PEARをインストールすると、PECLも同時にインストールされます。

Ubuntuの場合は、次のコマンドでPEARをインストールできます。
PHPが未インストールなら、このコマンドで同時にインストールされます。

sudo apt install php-pear

PHPのバージョンに指定したい場合は、事前にインストールしておきましょう。

そして、PECL(PEAR)のバージョンは次のコマンドで確認可能。

$ pecl version
PEAR Version: 1.10.12
PHP Version: 8.1.2-1ubuntu2.14
Zend Engine Version: 4.1.2
Running on: Linux ubuntu2204.localdomain 5.15.0-53-generic #59-Ubuntu SMP Mon Oct 17 18:53:30 UTC 2022 x86_64

これでPECLコマンドが、とりあえずは利用可能です。

phpizeコマンド

PECLコマンドとphpizeコマンドは、セットで動きます。
PECLコマンドだけ動くようになっても、phpizeコマンドが動かないと意味がありません。

実際にPECLコマンドだけ実行したら、次のエラーが出ます。

running: phpize
sh: 1: phpize: not found
ERROR: `phpize' failed

このエラーを出さないためには、phpizeコマンドが動くようにする必要があります。
phpizeコマンドを動かすには、次のコマンドを実行します。

sudo apt install php-dev

では、phpizeコマンドの確認です。

$ phpize -v
Configuring for:
PHP Api Version:         20210902
Zend Module Api No:      20210902
Zend Extension Api No:   420210902

これで正式にPECLコマンドが利用可能になりました。

Swooleのインストール

まず、PECL (PHP Extension Community Library) のリポジトリ更新を行います。

$ sudo pecl channel-update pecl.php.net 
Updating channel "pecl.php.net"
Update of Channel "pecl.php.net" succeeded

次に、以下のコマンドでSwooleをインストールします。

sudo pecl install swoole

途中で、以下の項目が確認されます。

enable sockets supports? [no] :
enable openssl support? [no] :
enable mysqlnd support? [no] :
enable curl support? [no] :
enable cares support? [no] :
enable brotli support? [yes] :
enable PostgreSQL database support? [no] :
enable ODBC database support? [no] :
enable Oracle database support? [no] :
enable Sqlite database support? [no] :

ここでは、すべてデフォルトで進めています。
各自の環境に合わせて、入力しましょう。
(※yesにした項目については、依存するファイルが必要となります)

入力を済ませると、コンパイルが実行されます。
そこそこ、待つことになります。

Build process completed successfully
Installing '/usr/include/php/20210902/ext/swoole/php_swoole.h'
Installing '/usr/include/php/20210902/ext/swoole/config.h'
Installing '/usr/lib/php/20210902/swoole.so'
install ok: channel://pecl.php.net/swoole-5.1.1
configuration option "php_ini" is not set to php.ini location
You should add "extension=swoole.so" to php.ini

Swooleのインストールは、上手くいったようです。
ちゃんと最新版がインストールされていることを確認できます。

ただし、php.iniでの作業が必要ということです。

php.iniへの追記

PHPにSwooleの存在を教えましょう。
そのために、php.iniにswoole.soを追記します。

ただし、ここで注意すべきポイントがあります。
基本的には、SwooleはコマンドラインのPHP(CLI)で動くことが想定されています。

したがって、コマンドライン版PHPのphp.iniへの追記となるのです。
この点が、他の拡張機能とは大きく異なるところかもしれません。

では、コマンドライン版PHPのphp.iniはどこにあるのか?となりますよね。
それを知るためには、以下のコマンドを実行します。

php --ini

実行すると、以下のように返答が表示されます。

$ php --ini
Configuration File (php.ini) Path: /etc/php/8.1/cli
Loaded Configuration File:         /etc/php/8.1/cli/php.ini
Scan for additional .ini files in: /etc/php/8.1/cli/conf.d
Additional .ini files parsed:      /etc/php/8.1/cli/conf.d/10-opcache.ini,
・・・

追記方法には、複数のやり方があります。
今回は、最もシンプルに「/etc/php/8.1/cli/php.ini」に「extension=swoole.so」を追記します。

コマンドライン版PHPの場合は、Apacheの再起動は不要です。
次のコマンドを実行して確認してみましょう。

$ php -m | grep swoole
swoole

PHPの拡張機能として、インストールされていることを確認できました。

Swooleの動作確認

以下のスクリプトは、基本的なHTTPサーバーを作成し、リクエストに応じて「Hello, Swoole!」というメッセージを返すものです。

<?php
// Swoole HTTPサーバーの作成
$http = new Swoole\Http\Server("127.0.0.1", 9501);

// リクエストを受け取った際の挙動を定義
$http->on("request", function ($request, $response) {
    $response->header("Content-Type", "text/plain");
    $response->end("Hello, Swoole!");
});

// サーバー起動
$http->start();
?>

このコードを「swoole_test.php」という名称で保存します。
そして、以下のコマンドでこのファイルを実行します。

php swoole_test.php

実行すると、以下のように処理が継続中となります。

$ php swoole_test.php

別のターミナルを開いて、wgetで「http://localhost:9501」アクセスします。

$ wget http://127.0.0.1:9501
--2023-11-27 19:24:22--  http://127.0.0.1:9501/
127.0.0.1:9501 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 14 
‘index.html’ に保存中

index.html                    100%[=================================================>]      14  --.-KB/s    in 0s

2023-11-27 19:24:22 (1013 KB/s) - ‘index.html’ へ保存完了 [14/14]

保存されたファイルを確認しましょう。

Swooleで作成したHTTPサーバーが、ちゃんと機能していることを確認できます。

タイトルとURLをコピーしました