


Cara menggunakan Swoole untuk melaksanakan pelayan WebSocket dan interaksi pangkalan data
Cara menggunakan Swoole untuk melaksanakan pelayan WebSocket dan interaksi pangkalan data
Pengenalan:
WebSocket ialah protokol komunikasi dupleks penuh berdasarkan protokol TCP, yang boleh mewujudkan komunikasi dua hala masa nyata antara pelanggan dan pelayan . Swoole ialah sambungan PHP yang boleh melaksanakan pengaturcaraan tak segerak dan serentak berprestasi tinggi dengan mudah. Dalam artikel ini, kami akan memperkenalkan secara terperinci cara menggunakan Swoole untuk membina pelayan WebSocket dan berinteraksi dengan pangkalan data.
Langkah 1: Pasang sambungan Swoole
Mula-mula, kita perlu memasang sambungan Swoole. Ia boleh dipasang melalui arahan berikut:
pecl install swoole
Langkah 2: Buat pelayan WebSocket
Seterusnya, kami mencipta pelayan WebSocket, mendengar port yang ditentukan, dan mewujudkan sambungan dengan klien. Ini boleh dicapai menggunakan kod berikut:
<?php $server = new SwooleWebSocketServer("0.0.0.0", 9501); $server->on('open', function (SwooleWebSocketServer $server, $request) { echo "new connection open: {$request->fd} "; }); $server->on('message', function (SwooleWebSocketServer $server, $frame) { echo "received message: {$frame->data} "; // 处理数据库交互 $db = new mysqli('localhost', 'username', 'password', 'database'); $result = $db->query("SELECT * FROM users"); while ($row = $result->fetch_assoc()) { $server->push($frame->fd, json_encode($row)); } $db->close(); }); $server->on('close', function ($ser, $fd) { echo "connection close: {$fd} "; }); $server->start(); ?>
Dalam kod di atas, kami mencipta pelayan WebSocket dan menambah tiga fungsi panggil balik acara. Apabila sambungan diwujudkan, acara open
akan dicetuskan apabila mesej diterima, acara message
akan dicetuskan apabila sambungan ditutup, ; acara tutup
akan dicetuskan. Dalam acara message
, kami boleh melaksanakan operasi interaktif pangkalan data. open
事件将被触发;当收到消息时,message
事件将被触发;当连接关闭时,close
事件将被触发。在message
事件中,我们可以进行数据库的交互操作。
步骤三:与数据库交互
在message
事件回调函数中,我们使用了MySQLi扩展来与数据库进行交互。首先,我们创建了一个$db
对象,并使用mysqli
的构造函数连接到数据库。接着,我们执行了一条查询语句,并通过while
循环将查询结果发送给客户端。最后,我们关闭了数据库连接。
需要注意的是,为了安全起见,我们应该将数据库的相关信息(如用户名和密码)设置为环境变量,并通过getenv()
函数来获取这些值,以避免直接暴露在代码中。
步骤四:运行服务器
最后,我们使用命令行来运行上述代码。在命令行中切换到代码所在的目录,并执行以下命令:
php server.php
如果一切正常,你将看到WebSocket服务器成功启动,并等待客户端的连接。当有客户端连接到服务器时,open
事件将被触发,并在命令行中显示连接的ID。当收到客户端发来的消息时,message
事件将被触发,并在命令行中显示收到的消息。当连接关闭时,close
事件将被触发,同样在命令行中显示连接的关闭。
总结:
本文详细介绍了如何使用Swoole实现WebSocket服务器与数据库的交互。通过创建WebSocket服务器,并在message
$db
dan menggunakan pembina mysqli
untuk menyambung ke pangkalan data. Seterusnya, kami melaksanakan pernyataan pertanyaan dan menghantar hasil pertanyaan kepada klien melalui gelung while
. Akhirnya, kami menutup sambungan pangkalan data. 🎜🎜Perlu diambil perhatian bahawa atas sebab keselamatan, kita harus menetapkan maklumat berkaitan pangkalan data (seperti nama pengguna dan kata laluan) sebagai pembolehubah persekitaran dan mendapatkan nilai ini melalui fungsi getenv()
untuk mengelakkan langsung terdedah dalam kod. 🎜🎜Langkah 4: Jalankan pelayan🎜🎜Akhir sekali, kami menggunakan baris arahan untuk menjalankan kod di atas. Beralih ke direktori di mana kod terletak pada baris arahan dan laksanakan arahan berikut: 🎜rrreee🎜 Jika semuanya berjalan lancar, anda akan melihat bahawa pelayan WebSocket bermula dengan jayanya dan sedang menunggu pelanggan untuk menyambung. Apabila pelanggan menyambung ke pelayan, acara open
akan dicetuskan dan ID sambungan akan dipaparkan pada baris arahan. Apabila mesej daripada klien diterima, acara message
akan dicetuskan dan mesej yang diterima akan dipaparkan pada baris arahan. Apabila sambungan ditutup, acara close
akan dicetuskan dan penutupan sambungan juga akan dipaparkan pada baris arahan. 🎜🎜Ringkasan: 🎜Artikel ini memperincikan cara menggunakan Swoole untuk melaksanakan interaksi antara pelayan WebSocket dan pangkalan data. Dengan mencipta pelayan WebSocket dan melakukan interaksi pangkalan data dalam fungsi panggil balik acara mesej
, kami boleh mencapai komunikasi dua hala masa nyata. Menggunakan sambungan Swoole, kami boleh melakukan pengaturcaraan tak segerak dan serentak berprestasi tinggi dengan mudah. Saya harap artikel ini akan membantu anda dalam menggunakan Swoole untuk berinteraksi dengan pangkalan data. 🎜Atas ialah kandungan terperinci Cara menggunakan Swoole untuk melaksanakan pelayan WebSocket dan interaksi pangkalan data. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Dalam artikel ini, kami akan membandingkan Acara Dihantar Pelayan (SSE) dan WebSockets, kedua-duanya adalah kaedah yang boleh dipercayai untuk menyampaikan data. Kami akan menganalisisnya dalam lapan aspek, termasuk arah komunikasi, protokol asas, keselamatan, kemudahan penggunaan, prestasi, struktur mesej, kemudahan penggunaan dan alat ujian. Perbandingan aspek-aspek ini diringkaskan seperti berikut: Kategori Peristiwa Dihantar Pelayan (SSE) WebSocket Arah Komunikasi Sehala Dwi-arah Protokol Pendasar HTTP WebSocket Protocol Keselamatan Sama seperti HTTP Kerentanan keselamatan sedia ada Kemudahan penggunaan Tetapan Tetapan mudah Prestasi kompleks Kelajuan penghantaran mesej pantas Dijejaskan oleh pemprosesan mesej dan pengurusan sambungan Struktur mesej Teks biasa atau binari Kemudahan penggunaan Tersedia secara meluas Berguna untuk penyepaduan WebSocket

Pemetaan polimorfik hibernate boleh memetakan kelas yang diwarisi ke pangkalan data dan menyediakan jenis pemetaan berikut: subkelas bercantum: Cipta jadual berasingan untuk subkelas, termasuk semua lajur kelas induk. table-per-class: Cipta jadual berasingan untuk subkelas, yang mengandungi hanya lajur khusus subkelas. union-subclass: serupa dengan joined-subclass, tetapi jadual kelas induk menggabungkan semua lajur subclass.

Keluaran terbaharu Apple bagi sistem iOS18, iPadOS18 dan macOS Sequoia telah menambah ciri penting pada aplikasi Photos, yang direka untuk membantu pengguna memulihkan foto dan video yang hilang atau rosak dengan mudah disebabkan pelbagai sebab. Ciri baharu ini memperkenalkan album yang dipanggil "Dipulihkan" dalam bahagian Alat pada apl Foto yang akan muncul secara automatik apabila pengguna mempunyai gambar atau video pada peranti mereka yang bukan sebahagian daripada pustaka foto mereka. Kemunculan album "Dipulihkan" menyediakan penyelesaian untuk foto dan video yang hilang akibat kerosakan pangkalan data, aplikasi kamera tidak disimpan ke pustaka foto dengan betul, atau aplikasi pihak ketiga yang menguruskan pustaka foto. Pengguna hanya memerlukan beberapa langkah mudah

Perbandingan prestasi: Throughput: Swoole mempunyai throughput yang lebih tinggi berkat mekanisme coroutinenya. Latensi: Penukaran konteks coroutine Swoole mempunyai overhed yang lebih rendah dan kependaman yang lebih kecil. Penggunaan ingatan: Coroutine Swoole menduduki kurang memori. Kemudahan penggunaan: Swoole menyediakan API pengaturcaraan serentak yang lebih mudah digunakan.

Cara menggunakan MySQLi untuk mewujudkan sambungan pangkalan data dalam PHP: Sertakan sambungan MySQLi (require_once) Cipta fungsi sambungan (functionconnect_to_db) Fungsi sambungan panggilan ($conn=connect_to_db()) Laksanakan pertanyaan ($result=$conn->query()) Tutup sambungan ( $conn->close())

Untuk mengendalikan ralat sambungan pangkalan data dalam PHP, anda boleh menggunakan langkah berikut: Gunakan mysqli_connect_errno() untuk mendapatkan kod ralat. Gunakan mysqli_connect_error() untuk mendapatkan mesej ralat. Dengan menangkap dan mengelog mesej ralat ini, isu sambungan pangkalan data boleh dikenal pasti dan diselesaikan dengan mudah, memastikan kelancaran aplikasi anda.

Swoole coroutine ialah perpustakaan konkurensi ringan yang membolehkan pembangun menulis program serentak. Mekanisme penjadualan coroutine Swoole adalah berdasarkan corak coroutine dan gelung peristiwa, menggunakan tindanan coroutine untuk mengurus pelaksanaan coroutine dan menggantung coroutine selepas mereka melepaskan kawalan. Gelung peristiwa mengendalikan peristiwa IO dan pemasa Apabila coroutine melepaskan kawalan, ia digantung dan kembali ke gelung peristiwa. Apabila peristiwa berlaku, Swoole bertukar daripada gelung peristiwa kepada coroutine yang belum selesai, melengkapkan suis dengan menyimpan dan memuatkan keadaan coroutine. Penjadualan coroutine menggunakan mekanisme keutamaan dan menyokong penggantungan, tidur dan operasi semula untuk mengawal pelaksanaan coroutine secara fleksibel.

Melalui pakej pangkalan data/sql perpustakaan standard Go, anda boleh menyambung ke pangkalan data jauh seperti MySQL, PostgreSQL atau SQLite: buat rentetan sambungan yang mengandungi maklumat sambungan pangkalan data. Gunakan fungsi sql.Open() untuk membuka sambungan pangkalan data. Lakukan operasi pangkalan data seperti pertanyaan SQL dan operasi sisipan. Gunakan tangguh untuk menutup sambungan pangkalan data untuk mengeluarkan sumber.
