ホームページ  >  記事  >  PHPフレームワーク  >  Swoole が非同期 LDAP 操作をサポートする方法

Swoole が非同期 LDAP 操作をサポートする方法

WBOY
WBOYオリジナル
2023-06-25 08:43:58538ブラウズ

現在、多くの企業はユーザー ID 認証システムとして LDAP (Lightweight Directory Access Protocol) を使用していますが、LDAP クエリ操作はパフォーマンスのボトルネックを引き起こしやすいです。現時点では、システムのパフォーマンスを向上させるために、Swoole を使用して非同期 LDAP 操作をサポートする必要があります。

Swoole は、PHP 言語をベースにした高性能な非同期ネットワーク通信フレームワークで、非同期ソケット、非同期 MySQL、非同期 Redis などの一般的な非同期 IO コンポーネントが組み込まれており、非同期 DNS、非同期ネットワークをサポートしています。 HTTPクライアント、非同期HTTPサーバーなどの機能。 Swoole の高性能および非同期 IO 機能により、HTTP サービス、TCP サービス、WebSocket サービスなどの同時実行性の高いシナリオでのネットワーク通信に非常に適しています。

まず、Swoole 拡張機能をインストールする必要があります。次のコマンドでインストールできます:

pecl install swoole

インストールが完了したら、PHP に次のコードを追加して Swoole 拡張機能を有効にします:

extension=swoole.so

次に、非同期 LDAP クライアントを作成できます。次のコードを使用します。

$client = new SwooleCoroutineClient(SWOOLE_SOCK_TCP);

if (!$client->connect('ldap://localhost', 389)) {
    echo "connect failed. Error: {$client->errCode}
";
    exit;
}

$client->set([
    'open_ldap' => true,
    'timeout' => 2,
]);

if (!$client->startTls()) {
    echo "Error: StartTLS failed. Error: {$client->errCode}
";
    exit;
}

if (!$client->bind('cn=admin,dc=example,dc=com', 'password')) {
    echo "Error: Bind failed. Error: {$client->errCode}
";
    exit;
}

if (!$client->search('ou=People,dc=example,dc=com', 'uid=guybrush', ['dn', 'cn', 'mail'])) {
    echo "Error: Search failed. Error: {$client->errCode}
";
    exit;
}

while (true) {
    $entry = $client->getReplies();

    if ($entry === false) {
        echo "Error: Get reply failed. Error: {$client->errCode}
";
        exit;
    }

    if (!$entry) break;

    foreach ($entry as $item) {
        echo "dn: " . $item['dn'] . "
";
        echo "cn: " . $item['cn'] . "
";
        echo "mail: " . $item['mail'] . "

";
    }
}

$client->close();

上記のコードでは、Swoole の非同期 TCP クライアントを使用して LDAP サービスに接続し、startTls() メソッドを使用して TLS 暗号化を有効にし、bind() メソッドを使用して管理者アカウントとパスワードをバインドします。最後に、search() メソッドを使用して、指定された DN 内の条件を満たすレコードをクエリします。 search() メソッドは Generator オブジェクトを返すため、クエリ結果を取得するには getReplies() メソッドを使用する必要があることに注意してください。

非同期 LDAP 操作に Swoole を使用する場合は、OpenLDAP サポートを有効にする必要があります。有効にしないと、TLS が有効にならないか、他のエラーが発生することに注意してください。 Swoole 拡張機能をコンパイルするときに、OpenLDAP サポートを有効にすることができます。

./configure --enable-openssl --enable-sockets --enable-http2 --enable-coroutine --enable-async-redis --enable-async-mysql --enable-async-httpclient --enable-async-filesystem --enable-open-ldap

上記のメソッドに加えて、Swoole は、レコードを追加するための add() メソッドや、modify() メソッドなどの他の LDAP メソッドも提供します。レコードの変更には delete() メソッドが使用され、レコードの削除には delete() メソッドが使用されます。これらのメソッドの使用法は search() メソッドに似ています。これらのメソッドは Generator オブジェクトを返します。結果を取得するには getReplies() メソッドを使用する必要があります。

一般に、非同期 LDAP 操作に Swoole を使用するのは非常に簡単です。 Swoole の非同期 IO 機能により、LDAP クエリ操作のブロックによって引き起こされるパフォーマンスの問題を回避し、より良いパフォーマンスを得ることができます。

以上がSwoole が非同期 LDAP 操作をサポートする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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