Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Cara memanggil prosedur tersimpan dalam Swoole

Cara memanggil prosedur tersimpan dalam Swoole

PHPz
PHPzasal
2023-03-29 11:28:46370semak imbas

Swoole ialah rangka kerja komunikasi rangkaian berprestasi tinggi yang digunakan secara meluas Ia sering digunakan untuk membangunkan pelayan web, pelayan permainan dalam talian dan pelbagai perkhidmatan IO tak segerak. Dalam ekosistem Swooole, memanggil prosedur tersimpan ialah ciri yang sangat penting yang boleh meningkatkan prestasi aplikasi web dengan banyak. Artikel ini akan memperkenalkan cara memanggil prosedur tersimpan dalam Swoole.

1. Apakah itu prosedur tersimpan?

Prosedur tersimpan ialah program dalam sistem pengurusan pangkalan data yang direka bentuk untuk melaksanakan set operasi SQL yang kompleks. Prosedur tersimpan boleh dianggap sebagai fungsi pernyataan SQL, yang boleh menerima parameter, melaksanakan satu siri operasi, dan mengembalikan hasil. Prosedur tersimpan biasanya digunakan untuk melaksanakan operasi pangkalan data yang kompleks, seperti pengiraan data kompleks, pemprosesan data dan analisis data.

Kelebihan menggunakan prosedur tersimpan adalah jelas, kerana ia boleh mengurangkan komunikasi rangkaian dan overhed pelayan pangkalan data, dan meningkatkan kelajuan dan kecekapan operasi pangkalan data.

2. Cara memanggil prosedur tersimpan dalam Swoole

1 Pasang sambungan PHP

Untuk memanggil prosedur tersimpan dalam Swoole, anda perlu memasang sambungan pangkalan data PHP terlebih dahulu. Kita boleh menggunakan arahan berikut untuk memasang sambungan swoole_mysql:

pecl install swoole_mysql

2. Sambung ke pangkalan data

Sebelum menggunakan Swoole untuk memanggil prosedur tersimpan, kita perlu menyambung ke pangkalan data MySQL pertama. Menyambung ke pangkalan data boleh menggunakan salah satu sambungan MySQLi atau sambungan PDO. Selepas sambungan berjaya, anda boleh menggunakan fungsi pertanyaan MySQL yang disediakan oleh Swoole untuk menghantar pertanyaan SQL.

Berikut ialah contoh penyambungan ke pangkalan data MySQL:

$db = new mysqli('localhost', 'user', 'password', 'database');
if($db->connect_errno) {
    die('MySQL连接失败:' . $db->connect_error);
}

3 Tentukan prosedur tersimpan

Sebelum memanggil prosedur tersimpan dalam Swoole, anda perlu. tentukan prosedur tersimpan. Untuk menentukan prosedur tersimpan, gunakan pernyataan CREATE PROCEDURE. Sebagai contoh, berikut ialah prosedur tersimpan sampel:

CREATE PROCEDURE `user_login`(IN user_name varchar(50), IN user_password varchar(255), OUT result int)
BEGIN
    SELECT COUNT(*) INTO result FROM users WHERE user_name = user_name AND user_password = user_password;
END

Prosedur tersimpan sampel ini dipanggil log masuk pengguna dan ia perlu menerima dua parameter: nama_pengguna dan kata laluan_pengguna. Tujuan prosedur tersimpan adalah untuk menyemak sama ada nama pengguna dan kata laluan yang diberikan sepadan dan menyimpan hasilnya dalam parameter hasil.

4. Panggil prosedur tersimpan

Swoole menyediakan fungsi yang dipanggil swoole_mysql_query, yang boleh digunakan untuk melaksanakan pertanyaan MySQL. Fungsi ini tidak segerak dan boleh mengendalikan permintaan lain semasa pelaksanaan. Berikut ialah contoh:

$db = new Swoole\Coroutine\MySQL();
$db->connect([
    'host' => 'localhost',
    'user' => 'user',
    'password' => 'password',
    'database' => 'database',
]);
$result = null;
$db->query("CALL user_login('user', 'password', @result)");
$ret = $db->query("SELECT @result");
var_dump($ret);

Dalam contoh ini, kami mula-mula menyambung ke pangkalan data MySQL dan kemudian menggunakan fungsi pertanyaan untuk memanggil prosedur tersimpan user_login. Selepas prosedur tersimpan dilaksanakan, kami menggunakan fungsi pertanyaan lain untuk mendapatkan semula keputusan.

5. Contoh lengkap

Berikut ialah contoh program lengkap untuk Swoole memanggil prosedur tersimpan:

<?php
/**
 * Swoole调用存储过程
 */

//连接MySQL数据库
$db = new mysqli(&#39;localhost&#39;, &#39;user&#39;, &#39;password&#39;, &#39;database&#39;);
if($db->connect_errno) {
    die('MySQL连接失败:' . $db->connect_error);
}

//定义存储过程
$query = <<<EOT
CREATE PROCEDURE `user_login`(IN user_name varchar(50), IN user_password varchar(255), OUT result int)
BEGIN
    SELECT COUNT(*) INTO result FROM users WHERE user_name = user_name AND user_password = user_password;
END
EOT;
$db->query($query);

//调用存储过程
$result = null;
$db->query("CALL user_login('user', 'password', @result)");
$ret = $db->query("SELECT @result");
var_dump($ret);

//关闭连接
$db->close();

Dalam contoh ini, kami mula-mula menyambung ke MySQL pangkalan data, Kemudian tentukan prosedur tersimpan user_login. Akhir sekali, kami memanggil prosedur tersimpan menggunakan pernyataan CALL dan mendapatkan semula keputusan menggunakan pernyataan SELECT.

3. Ringkasan

Dalam artikel ini, kami memperkenalkan kaedah memanggil prosedur tersimpan dalam Swoole. Untuk aplikasi web yang perlu melakukan operasi pangkalan data yang kompleks, prosedur tersimpan menyediakan cara yang berguna untuk mempercepatkan operasi pangkalan data. Ciri IO berprestasi tinggi dan tak segerak Swoole boleh digabungkan dengan prosedur tersimpan untuk mencapai operasi pangkalan data yang lebih cekap.

Atas ialah kandungan terperinci Cara memanggil prosedur tersimpan dalam Swoole. 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