Jadual Kandungan
Pasang sambungan Swoole
Melaksanakan pelayan RPC
Buat kelas perkhidmatan
Buat pelayan RPC
Buat pelanggan
Ringkasan
Rumah rangka kerja php Swoole Swoole melaksanakan pelayan RPC berprestasi tinggi

Swoole melaksanakan pelayan RPC berprestasi tinggi

Jun 13, 2023 pm 05:54 PM
rpc prestasi tinggi swoole

Dalam beberapa tahun kebelakangan ini, dengan pembangunan berterusan aplikasi rangkaian, semakin banyak aplikasi perlu melaksanakan fungsi Remote Procedure Call (RPC). Rangka kerja RPC tradisional seperti Dubbo, Thrift, gRPC, dsb. boleh memenuhi permintaan ini Namun, dengan peningkatan aplikasi dan perniagaan, masalah prestasi menjadi semakin jelas. Untuk menyelesaikan masalah ini, komuniti sumber terbuka melancarkan pelayan RPC berprestasi tinggi berdasarkan bahasa PHP-Swoole.

Swoole ialah rangka kerja komunikasi rangkaian tak segerak, selari, berprestasi tinggi yang dibangunkan berdasarkan bahasa PHP, yang membolehkan program PHP memproses permintaan rangkaian dengan lebih cekap. Pelayan RPC ialah komponen Swoole Ia menyediakan kaedah panggilan prosedur jauh berdasarkan protokol TCP, menyokong I/O tak segerak, coroutine, pengurusan proses dan ciri-ciri lain, dan boleh melaksanakan perkhidmatan RPC berprestasi tinggi dan berkonkurensi tinggi dengan mudah.

Seterusnya, kami akan memperkenalkan cara menggunakan Swoole untuk melaksanakan pelayan RPC berprestasi tinggi.

Pasang sambungan Swoole

Sebelum kita bermula, kita perlu memasang sambungan Swoole terlebih dahulu. Memandangkan Swoole bergantung pada sambungan C asas PHP, anda perlu memasang pengkompil C dan perpustakaan bergantung Swoole terlebih dahulu.

yum install -y gcc 
    automake 
    autoconf 
    libtool 
    make 
    php-devel 
    php-pear 
    pcre-devel 
    openssl-devel
Salin selepas log masuk

Selepas memasang perpustakaan bergantung, kita boleh menggunakan arahan pecl untuk memasang sambungan Swoole:

pecl install swoole
Salin selepas log masuk

Selepas pemasangan selesai, kita perlu menambah baris berikut pada php.ini fail untuk mendayakan sambungan Swoole:

extension=swoole.so
Salin selepas log masuk

Melaksanakan pelayan RPC

Selepas memasang sambungan Swoole, kami boleh mula melaksanakan pelayan RPC. Di sini kita akan menggunakan mekanisme refleksi PHP untuk melaksanakan pendaftaran perkhidmatan automatik, dan coroutine Swoole untuk mengendalikan I/O tak segerak.

Buat kelas perkhidmatan

Pertama, kita perlu mencipta kelas perkhidmatan untuk mendedahkan kaedah untuk panggilan jauh. Dalam kelas ini, kita boleh mentakrifkan berbilang kaedah dan menggunakan DocBlock PHP untuk menandakan parameter dan jenis nilai pulangan kaedah untuk menjana dokumentasi dan petua kod secara automatik.

/**
 * @method string hello(string $name)
 */
class MyService
{
    public function hello(string $name): string
    {
        return "Hello, $name!";
    }
}
Salin selepas log masuk

Dalam kod di atas, kami mentakrifkan kelas MyService, yang mengandungi kaedah bernama hello, yang menerima parameter jenis rentetan $name dan mengembalikan data jenis rentetan.

Buat pelayan RPC

Seterusnya, kita perlu melaksanakan pelayan RPC untuk menerima permintaan pelanggan dan memanggil kaedah yang sepadan dalam kelas perkhidmatan untuk mengendalikan permintaan.

$server = new SwooleServer('127.0.0.1', 9501, SWOOLE_PROCESS, SWOOLE_SOCK_TCP);

/**
 * 注册服务
 */
$server->set([
    'worker_num' => 1,
    'dispatch_mode' => 1,
]);
$myService = new MyService();
$methods = get_class_methods($myService);
$availableMethods = [];
foreach ($methods as $method) {
    // 忽略 __* 类型的方法,私有方法和构造方法
    if (!preg_match('/^__|^get[A-Z]/i', $method) && is_callable([$myService, $method])) {
        $availableMethods[] = $method;
    }
}
$server->on('WorkerStart', function () use ($availableMethods, $myService) {
    // 打开协程支持
    SwooleRuntime::enableCoroutine();
    $service = new HproseSwooleSocketService();
    foreach ($availableMethods as $method) {
        $service->addFunction([$myService, $method], $method);
    }
    $server = new HproseSwooleSocketServer('tcp://0.0.0.0:9501');

    //监听 RPC 请求
    $coroutine = new SwooleCoroutineHttpClient();
    $coroutine->setHeaders([
        'Content-Type' => 'text/plain',
    ]);

    while (true) {
        $socket = $server->accept();
        if ($socket !== false) {
            $socket->setOption(['open_length_check' => 1]);
            $socket->setOption(['package_length_type' => 'N']);
            $socket->setOption(['package_length_offset' => 0]);
            $socket->setOption(['package_body_offset' => 4]);
            $socket->start();
            $client = new SwooleCoroutineClient(SWOOLE_SOCK_TCP);
            $client->connect('127.0.0.1', 9502);
            $client->send($socket->recv());
            $out = $client->recv();
            $socket->send($out);
            $socket->close();
        }
    }
});
$server->start();
Salin selepas log masuk

Dalam kod di atas, kami mencipta objek $server yang mendengar pada alamat dan port 127.0.0.1:9501, menggunakan mod proses SWOOLE_PROCESS dan protokol SWOOLE_SOCK_TCP.

Selepas pelayan dimulakan, kami menggunakan mekanisme refleksi PHP untuk mendapatkan semua kaedah boleh panggil dalam kelas perkhidmatan. Kemudian, kami menggunakan coroutine Swoole untuk mendengar permintaan RPC dan mengendalikan permintaan dengan memanggil kaedah kelas perkhidmatan. Semasa proses pelaksanaan, kami menggunakan perpustakaan pihak ketiga Hprose, yang menyediakan cara yang mudah dan jelas untuk melaksanakan perkhidmatan RPC dan sangat mudah digunakan.

Buat pelanggan

Akhir sekali, kita perlu mencipta pelanggan untuk meminta perkhidmatan RPC. Dalam contoh ini, kita boleh menggunakan kelas Klien yang disertakan dengan Hprose untuk mencapai ini.

$client = new HproseHttpClient('http://127.0.0.1:9501/', false);
echo $client->hello('Swoole');
Salin selepas log masuk

Dalam kod di atas, kami mencipta objek klien HTTP Hprose dan memanggil kaedah helo dalam kelas perkhidmatan untuk memulakan permintaan kepada pelayan RPC.

Ringkasan

Swoole ialah rangka kerja komunikasi rangkaian yang berkuasa yang menyediakan banyak ciri tak segerak, selari dan berprestasi tinggi, yang boleh meningkatkan keupayaan pemprosesan program PHP. Dengan mengkaji kandungan dalam artikel ini, kami boleh melaksanakan pelayan RPC berprestasi tinggi, berkonkurensi tinggi dan meningkatkan kecekapan pemprosesan dan pengendalian program PHP.

Atas ialah kandungan terperinci Swoole melaksanakan pelayan RPC berprestasi tinggi. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
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

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Arahan sembang dan cara menggunakannya
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Penyelesaian kepada ketidakupayaan untuk menyambung ke pelayan RPC dan ketidakupayaan untuk memasuki desktop Penyelesaian kepada ketidakupayaan untuk menyambung ke pelayan RPC dan ketidakupayaan untuk memasuki desktop Feb 18, 2024 am 10:34 AM

Apakah yang perlu saya lakukan jika pelayan RPC tidak tersedia dan tidak boleh diakses pada desktop Dalam beberapa tahun kebelakangan ini, komputer dan Internet telah menembusi setiap sudut kehidupan kita. Sebagai teknologi untuk pengkomputeran berpusat dan perkongsian sumber, Panggilan Prosedur Jauh (RPC) memainkan peranan penting dalam komunikasi rangkaian. Walau bagaimanapun, kadangkala kita mungkin menghadapi situasi di mana pelayan RPC tidak tersedia, mengakibatkan ketidakupayaan untuk memasuki desktop. Artikel ini akan menerangkan beberapa kemungkinan punca masalah ini dan memberikan penyelesaian. Pertama, kita perlu memahami mengapa pelayan RPC tidak tersedia. Pelayan RPC ialah a

Cara menggunakan coroutine swoole dalam laravel Cara menggunakan coroutine swoole dalam laravel Apr 09, 2024 pm 06:48 PM

Menggunakan coroutine Swoole dalam Laravel boleh memproses sejumlah besar permintaan secara serentak. Kelebihannya termasuk: Pemprosesan serentak: membolehkan berbilang permintaan diproses pada masa yang sama. Prestasi tinggi: Berdasarkan mekanisme acara epoll Linux, ia memproses permintaan dengan cekap. Penggunaan sumber yang rendah: memerlukan lebih sedikit sumber pelayan. Mudah untuk disepadukan: Penyepaduan lancar dengan rangka kerja Laravel, mudah digunakan.

PHP dan WebSocket: Membina aplikasi masa nyata berprestasi tinggi PHP dan WebSocket: Membina aplikasi masa nyata berprestasi tinggi Dec 17, 2023 pm 12:58 PM

PHP dan WebSocket: Membina aplikasi masa nyata berprestasi tinggi Apabila Internet berkembang dan keperluan pengguna meningkat, aplikasi masa nyata menjadi semakin biasa. Protokol HTTP tradisional mempunyai beberapa had semasa memproses data masa nyata, seperti keperluan untuk mengundi yang kerap atau mengundi panjang untuk mendapatkan data terkini. Untuk menyelesaikan masalah ini, WebSocket wujud. WebSocket ialah protokol komunikasi lanjutan yang menyediakan keupayaan komunikasi dua hala, membenarkan penghantaran dan penerimaan masa nyata antara penyemak imbas dan pelayan.

Mana satu lebih baik, swool atau pekerja? Mana satu lebih baik, swool atau pekerja? Apr 09, 2024 pm 07:00 PM

Swoole dan Workerman kedua-duanya adalah rangka kerja pelayan PHP berprestasi tinggi. Terkenal dengan pemprosesan tak segerak, prestasi cemerlang dan kebolehskalaannya, Swoole sesuai untuk projek yang perlu mengendalikan sejumlah besar permintaan serentak dan daya pemprosesan yang tinggi. Workerman menawarkan fleksibiliti mod tak segerak dan segerak, dengan API intuitif yang lebih sesuai untuk kemudahan penggunaan dan projek yang mengendalikan volum serentak yang lebih rendah.

Petua Pengaturcaraan Berprestasi Tinggi C++: Mengoptimumkan Kod untuk Pemprosesan Data Berskala Besar Petua Pengaturcaraan Berprestasi Tinggi C++: Mengoptimumkan Kod untuk Pemprosesan Data Berskala Besar Nov 27, 2023 am 08:29 AM

C++ ialah bahasa pengaturcaraan berprestasi tinggi yang menyediakan pembangun dengan fleksibiliti dan skalabiliti. Terutamanya dalam senario pemprosesan data berskala besar, kecekapan dan kelajuan pengkomputeran pantas C++ adalah sangat penting. Artikel ini akan memperkenalkan beberapa teknik untuk mengoptimumkan kod C++ untuk menampung keperluan pemprosesan data berskala besar. Menggunakan bekas STL dan bukannya tatasusunan tradisional Dalam pengaturcaraan C++, tatasusunan ialah salah satu struktur data yang biasa digunakan. Walau bagaimanapun, dalam pemprosesan data berskala besar, menggunakan bekas STL, seperti vektor, deque, senarai dan set, dsb., boleh menjadi lebih

Gunakan bahasa Go untuk membangun dan melaksanakan aplikasi pengecaman pertuturan berprestasi tinggi Gunakan bahasa Go untuk membangun dan melaksanakan aplikasi pengecaman pertuturan berprestasi tinggi Nov 20, 2023 am 08:11 AM

Dengan perkembangan berterusan sains dan teknologi, teknologi pengecaman pertuturan juga telah mencapai kemajuan dan aplikasi yang besar. Aplikasi pengecaman pertuturan digunakan secara meluas dalam pembantu suara, pembesar suara pintar, realiti maya dan bidang lain, memberikan orang ramai cara interaksi yang lebih mudah dan bijak. Cara melaksanakan aplikasi pengecaman pertuturan berprestasi tinggi telah menjadi persoalan yang patut diterokai. Dalam beberapa tahun kebelakangan ini, bahasa Go, sebagai bahasa pengaturcaraan berprestasi tinggi, telah menarik banyak perhatian dalam pembangunan aplikasi pengecaman pertuturan. Bahasa Go mempunyai ciri-ciri konkurensi yang tinggi, penulisan ringkas, dan kelajuan pelaksanaan yang pantas Ia sangat sesuai untuk membina prestasi tinggi

Bagaimana untuk memulakan semula perkhidmatan dalam rangka kerja swoole Bagaimana untuk memulakan semula perkhidmatan dalam rangka kerja swoole Apr 09, 2024 pm 06:15 PM

Untuk memulakan semula perkhidmatan Swoole, ikut langkah berikut: Semak status perkhidmatan dan dapatkan PID. Gunakan "bunuh -15 PID" untuk menghentikan perkhidmatan. Mulakan semula perkhidmatan menggunakan arahan yang sama yang memulakan perkhidmatan.

Bagaimanakah swoole_process membenarkan pengguna bertukar? Bagaimanakah swoole_process membenarkan pengguna bertukar? Apr 09, 2024 pm 06:21 PM

Proses Swoole membolehkan pengguna beralih Langkah-langkah khusus ialah: membuat proses pengguna;

See all articles