ホームページ > 記事 > PHPフレームワーク > Swoole が非同期 LDAP 操作をサポートする方法
現在、多くの企業はユーザー 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 サイトの他の関連記事を参照してください。