swoole_mysql_query
�첽��ִ��һ��SQL���ԣ���Ҫ����MySQLi��mysqlnd��չ���˺�����swoole�ײ��ṩ�����첽�����������PHP�ٷ�
mysqli->reap_async_query
�������ڵ�2���������⡣
mysqli->reap_async_query��recv���������ù�С���ڶ�ȡ�ϴ��RecordSetʱ���˷Ѵ���readϵͳ���ã����ܲ���- MySQL��������RecordSet���ܻ�ֶη��ͣ�
mysqli->reap_async_query���������������³����˻�Ϊͬ������ģʽ�������������
swoole_mysql_query�ײ�ʹ��64K�ڴ滺��������ʹ��ȡ�ܴ��RecordSetҲ����������readϵͳ���á�����
swoole_mysql_query����swoole�ṩ��Epoll�ӿ��첽��ȡMySQL��������RecordSet����������û���κ�������
����ԭ��
function swoole_mysql_query(mysqli $link, string $sql, callable $callback);
- $linkΪ�����ӵ�mysqli����
- $sqlΪҪִ�е�SQL���
- $callbackִ�гɹ����ص��˺���
- ÿ��MySQLi����ֻ��ͬʱִ��һ��SQL������ȴ����ؽ�������ִ����һ��SQL
swoole_mysql_query��Ҫswoole-1.8.0����߰汾�����ҽ�������CLI�����л���
�ص�����
function onSQLReady(mysqli $link, mixed $result);
- ִ��ʧ�ܣ�
$resultΪfalse����ȡ$link�����_error���Ի�ô�����Ϣ��_errno���Ի�ô����� - ִ�гɹ���SQLΪ�Dz�ѯ��䣬
$resultΪtrue����ȡ$link�����_affected_rows���Ի��Ӱ���������_insert_id���Ի��Insert����������ID - ִ�гɹ���SQLΪ��ѯ��䣬
$result�������
ʹ��ʾ��
$db = new mysqli;
$db->connect('127.0.0.1', 'root', 'root', 'test');
$sql = "SELECT * FROM `userinfo` LIMIT 0, 10000";
$s = microtime(true);
swoole_mysql_query($db, $sql, function(mysqli $db, $r) {
global $s;
//SQLִ��ʧ����
if ($r == false)
{
var_dump($db->_error, $db->_errno);
}
//ִ�гɹ���update/delete/insert��䣬û�н����
elseif ($r == true)
{
var_dump($db->_affected_rows, $db->_insert_id);
}
//ִ�гɹ���$r�ǽ��������
else
{
echo "count=".count($r).", time=".(microtime(true) - $s), "\n";
var_dump($r);
swoole_mysql_query($db, "show tables", function ($db, $r) {
var_dump($r);
});
}
});