Rumah  >  Artikel  >  rangka kerja php  >  Cara Swoole menyokong operasi LDAP tak segerak

Cara Swoole menyokong operasi LDAP tak segerak

WBOY
WBOYasal
2023-06-25 08:43:58581semak imbas

Kini, banyak perusahaan menggunakan LDAP (Lightweight Directory Access Protocol) sebagai sistem pengesahan identiti pengguna, tetapi operasi pertanyaan LDAP boleh menyebabkan kesesakan prestasi dengan mudah. Pada masa ini, anda perlu menggunakan Swoole untuk menyokong operasi LDAP tak segerak untuk meningkatkan prestasi sistem.

Swoole ialah rangka kerja komunikasi rangkaian tak segerak berprestasi tinggi berdasarkan bahasa PHP Ia mempunyai komponen IO tak segerak biasa seperti soket tak segerak, MySQL tak segerak, Redis tak segerak, dsb., dan menyokong DNS tak segerak, klien HTTP tak segerak. Pelayan HTTP dan fungsi lain . Ciri prestasi tinggi dan IO tak segerak Swoole menjadikannya sangat sesuai untuk komunikasi rangkaian dalam senario konkurensi tinggi, seperti perkhidmatan HTTP, perkhidmatan TCP, perkhidmatan WebSocket, dsb.

Mula-mula, kita perlu memasang sambungan Swoole. Ia boleh dipasang melalui arahan berikut:

pecl install swoole

Selepas pemasangan selesai, tambah kod berikut dalam PHP untuk mendayakan sambungan Swoole:

extension=swoole.so

Seterusnya, kita boleh mencipta klien LDAP tak segerak melalui kod berikut:

$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();

Dalam kod di atas, kami menggunakan klien TCP tak segerak Swoole untuk menyambung ke perkhidmatan LDAP, kemudian gunakan kaedah startTls() untuk mendayakan penyulitan TLS, gunakan kaedah bind() untuk mengikat akaun pentadbir dan kata laluan, dan akhirnya gunakan carian( ) kaedah untuk menanyakan DN yang ditentukan yang sepadan dengan rekod keadaan. Ambil perhatian bahawa kaedah search() mengembalikan objek Generator, dan kita perlu menggunakan kaedah getReplies() untuk mendapatkan hasil pertanyaan.

Perlu diambil perhatian bahawa apabila menggunakan Swoole untuk operasi LDAP tak segerak, sokongan OpenLDAP mesti dihidupkan, jika tidak, TLS tidak akan didayakan atau ralat lain akan berlaku. Kami boleh mendayakan sokongan OpenLDAP apabila menyusun sambungan Swoole:

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

Selain kaedah yang dinyatakan di atas, Swoole juga menyediakan beberapa kaedah LDAP lain, seperti kaedah add() untuk menambah rekod dan kaedah modify() untuk mengubah suai rekod, dan kaedah delete() digunakan untuk memadam rekod. Penggunaan kaedah ini adalah serupa dengan kaedah carian() Mereka akan mengembalikan objek Generator Anda perlu menggunakan kaedah getReplies() untuk mendapatkan hasil.

Secara keseluruhan, menggunakan Swoole untuk operasi LDAP tak segerak adalah sangat mudah. Melalui ciri IO tak segerak Swoole, kami boleh mengelakkan masalah prestasi yang disebabkan oleh menyekat operasi pertanyaan LDAP dan memperoleh prestasi yang lebih baik.

Atas ialah kandungan terperinci Cara Swoole menyokong operasi LDAP tak segerak. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn