<?php

$begin = time();

//同步请求
function multi_sync(){
$host = '192.168.2.87';
$user = 'census';
$password = 'census';
$database = 'census';
$mysqli = new mysqli($host, $user, $password, $database); $query = "SELECT sleep(1);" ;
$query .= "SELECT sleep(1);" ; if ( $mysqli -> multi_query ( $query )) {
do {
echo "multi_sync_query \n";
if ( $result = $mysqli -> store_result ()) {
$ret = $result->fetch_array(MYSQLI_ASSOC);
var_dump($ret);
}
// if ( $mysqli -> more_results ()) {
// printf ( "-----------------\n" );
// }
} while ( $mysqli -> more_results () && $mysqli -> next_result ());
}
}
multi_sync(); //同步请求
/*
function sync(){
$host = '192.168.2.87';
$user = 'census';
$password = 'census';
$database = 'census';
$db = new mysqli($host, $user, $password, $database);
echo "sync_query 1\n";
$statement1 = $db->query('select sleep(1)');
$ret1 = $statement1->fetch_array(MYSQLI_ASSOC);
echo "sync_query 2\n";
$statement2 = $db->query('select sleep(1)');
$ret2 = $statement2->fetch_array(MYSQLI_ASSOC);
var_dump($ret1);
var_dump($ret2);
}
sync();
*/ //携程异步---php携程,mysqlnd异步
/*
function f1(){
$db = new db();
$obj = $db->async_query('select sleep(1)');
echo "f1 async_query \n";
yield $obj;
$row = $db->fetch();
echo "f1 fetch\n";
yield $row;
} function f2(){
$db = new db();
$obj = $db->async_query('select sleep(1)');
echo "f2 async_query\n";
yield $obj;
$row = $db->fetch();
echo "f2 fetch\n";
yield $row;
} $gen1 = f1();
$gen2 = f2(); $gen1->current();
$gen2->current(); $gen1->next();
$gen2->next(); $ret1 = $gen1->current();
$ret2 = $gen2->current(); var_dump($ret1);
var_dump($ret2);
*/
echo time() - $begin; class db{
static $links;
private $obj; function getConn(){
$host = '192.168.2.87';
$user = 'census';
$password = 'census';
$database = 'census';
$this->obj = new mysqli($host, $user, $password, $database);
self::$links[spl_object_hash($this->obj)] = $this->obj;
return self::$links[spl_object_hash($this->obj)];
} function async_query($sql){
$link = $this->getConn();
$link->query($sql, MYSQLI_ASYNC);
return $link;
} function fetch(){
//for($i = 1; $i <= 5; $i++){
$read = $errors = $reject = self::$links;
$re = mysqli_poll($read, $errors, $reject, 1);
foreach($read as $obj){
if($this->obj === $obj){
$sql_result = $obj->reap_async_query();
$sql_result_array = $sql_result->fetch_array(MYSQLI_ASSOC);//只有一行
$sql_result->free();
return $sql_result_array;
}
}
//}
}
}

异步之后只要1秒,同步以及同步多请求,都是2秒

mysql的mysqli异步与php的携程的更多相关文章

  1. 开源实践 | 携程在OceanBase的探索与实践

    写在前面:选型考虑 携程于1999年创立,2016-2018年全面推进应用 MySQL 数据库,前期线上业务.前端技术等以 SQL Server 为主,后期数据库逐步从 SQL Server 转到开源 ...

  2. [转]向facebook学习,通过协程实现mysql查询的异步化

    FROM : 通过协程实现mysql查询的异步化 前言 最近学习了赵海平的演讲,了解到facebook的mysql查询可以进行异步化,从而提高性能.由于facebook实现的比较早,他们不得不对php ...

  3. Swoole 协程 MySQL 客户端与异步回调 MySQL 客户端的对比

    Swoole 协程 MySql 客户端与 异步回调 MySql 客户端的对比 为什么要对比这两种不同模式的客户端? 异步 MySQL 回调客户端是虽然在 Swoole 1.8.6 版本就已经发布了, ...

  4. PHP mysql与mysqli事务详解

    官方对PHP连接到MySQL数据库服务器的三种主要的API简介如下: http://php.net/manual/zh/mysqli.overview.php PHP mysql与mysqli事务详解 ...

  5. mysql、mysqli、PDO一句话概括比较

    mysql.mysqli.PDO一句话概括比较 1 mysql扩展 (注:原始的,较差) 2 mysqli扩展(面向过程式) (注:比上面多了更多功能) 3 mysqli扩展(面向对象式) (注:比上 ...

  6. centos 单独安装PHP的mysql和mysqli扩展

    2013年11月22日 11:25:41 Linux centos 6.3 最小化安装 mysql 5.5 php 5.4 安装PHP时只是 ./configure --prefix=/**** 并没 ...

  7. php Mysql 和Mysqli数据库函数整合

    PHP Mysql和Mysqli数据库函数整合 服务器如果支持mysqli函数将优先mysqli函数进行数据库操作 否则将调用mysql函数进行数据库操作 用法SQL::connect(host,us ...

  8. PHP数据库连接mysql与mysqli的区别与用法

    一.mysql与mysqli的概念相关: 1.mysql与mysqli都是php方面的函数集,与mysql数据库关联不大. 2.在php5版本之前,一般是用php的mysql函数去驱动mysql数据库 ...

  9. PHP中MySQL、MySQLi和PDO的用法和区别

    PHP的MySQL扩展(优缺点) 设计开发允许PHP应用与MySQL数据库交互的早期扩展.mysql扩展提供了一个面向过程 的接口: 并且是针对MySQL4.1.3或更早版本设计的.因此,这个扩展虽然 ...

随机推荐

  1. JavaScript相关基础知识点

    JavaScript简介: JavaScript是脚本语言,是一种轻量级的编程语言,是可插入 HTML 页面的编程代码,插入 HTML 页面后,可由所有的现代浏览器执行. JavaScript使用: ...

  2. set_time_limit

    语法 : void set_time_limit (int seconds)说明 : 设定一个程式所允许执行的秒数,如果到达限制的时间,程式将会传回错误.它预设的限制时间是30秒,max_execut ...

  3. [kuangbin]树链剖分 C - Tree

    和平常的树链剖分维护边权不同的地方在于对线段树的要求较高 NEGATE 反转区间,也就是a - b 内所有的边权取相反数 而Query询问是最大值,所以也就是维护可取反区间的最大值问题 需要维护的值是 ...

  4. ACE Editor在线代码编辑器简介及使用引导

    转自博客:https://www.cnblogs.com/cz-xjw/p/6476179.html ACE 是一个开源的.独立的.基于浏览器的代码编辑器,可以嵌入到任何web页面或JavaScrip ...

  5. AngularJS $scope 继承性 作用 生命周期

    一.基本概念 作用域是一个指向应用模型的对象,相当于MVVM中的ViewModel,能绑定数据(属性)和行为(方法),能监控表达式和传递事件,是实现双向绑定的基础,是应用在 HTML (视图) 和 J ...

  6. 查询指定网段可用IP脚

    方法一:linux命令 1.fping安装: yum install fping 2.fping使用: fping -g ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ...

  7. uniGUI 通过SessionList操作另外的登录用户

    参照bbs,写了这个方法,检查是否有同名用户已经登录:procedure TUniMainModule.CheckSameUser(aUserLoginCode: string);var  ASess ...

  8. Ubuntu下SVN安装和配置

    一.SVN安装 1.安装包 1.$ sudo apt-get install subversion 2.创建项目目录 $ sudo mkdir /home/xiaozhe/svn $ cd /home ...

  9. INDEX--从数据存放的角度看索引2

    在上次<INDEX--从数据存放的角度看索引>中,我们说到"唯一非聚集索引"和“非唯一非聚集索引”在存储上有一个明显的差别:唯一非聚集索引的非叶子节点上不会包含RID的 ...

  10. Asp .Net core 2 学习笔记(2) —— 中间件

    这个系列的初衷是便于自己总结与回顾,把笔记本上面的东西转移到这里,态度不由得谨慎许多,下面是我参考的资源: ASP.NET Core 中文文档目录 官方文档 记在这里的东西我会不断的完善丰满,对于文章 ...