요즘에는 많은 기업에서 사용자 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 암호화를 활성화하고 바인딩() 메서드를 사용하여 관리자 계정과 비밀번호를 바인딩한 다음 마지막으로 검색( ) 메서드를 사용하여 조건 레코드와 일치하는 지정된 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() 메서드 및 레코드 수정을 위한 수정() 메서드와 같은 몇 가지 다른 LDAP 메서드도 제공합니다. 레코드. 레코드를 삭제하는 데 delete() 메서드가 사용됩니다. 이러한 메소드의 사용은 검색() 메소드와 유사합니다. 결과를 얻으려면 getReplies() 메소드를 사용해야 합니다.
전반적으로 비동기 LDAP 작업에 Swoole을 사용하는 것은 매우 간단합니다. Swoole의 비동기 IO 기능을 통해 LDAP 쿼리 작업 차단으로 인한 성능 문제를 방지하고 더 나은 성능을 얻을 수 있습니다.
위 내용은 Swoole이 비동기 LDAP 작업을 지원하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!