<?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. 23种设计模式(1)-Facade设计模式

    前记 曾经我遇见的一个需求是这样的,接口A有个方法void methodA(),类B需要实现接口A的methodA()方法,并且在类B中需要把methodA()方法内部处理逻辑获得的结果利用C类实例的 ...

  2. python_运算符与表达式

    运算符与表达式 python运算符 运算符 功能说明 + 算术加法,列表.元组.字符串合并与连接,正号 - 算术减法,集合差集,相反数 * 算术乘法,序列重复 / 真除法 // 求整商,但如果操作数中 ...

  3. ASP.NET MVC Form表单验证与Authorize特性

    一.Form表单验证 1.基本概念 表单验证是一个基于票据(ticket-based)[也称为基于令牌(token-based)]的系统.当用户登录系统以后,会得到一个包含基于用户信息的票据(tick ...

  4. ReportMachine OCX 的使用方法

    ReportMachine OCX http://rmachine.haotui.com/thread-55-1-1.html RMReport.ocx RMEngine.Init(1); // 初始 ...

  5. bootstrap基础学习小记(一)简介模板、全局样式

    2011年,twitter的“一小撮”工程师为了提高他们内部的分析和管理能力,用业余时间为他们的产品构建了一套易用.优雅.灵活.可扩展的前端工具集--BootStrap.Bootstrap由MARK ...

  6. 【转】C#模拟http 发送post或get请求

    原文地址:http://www.cnblogs.com/xssxss/archive/2012/07/03/2574554.html 模拟POST Json public static string ...

  7. IO、NIO、AIO

    一. IO 传统的IO是同步阻塞模式,数据的读取与写入会阻塞在一个线程内等待其完成. 主要面向字节流编程.(流是单向的) 二. NIO NIO支持同步非阻塞模式,在进行IO调用后,然后去 轮询调用结果 ...

  8. 利用django-simple-captcha生成验证码

    参考文档 http://django-simple-captcha.readthedocs.io/en/latest/ django支持1.7+ 1.安装 pip install django-sim ...

  9. 初识SQL语句

    SQL(Structured Query Language ) 即结构化查询语言 SQL语言主要用于存取数据.查询数据.更新数据和管理关系数据库系统,SQL语言由IBM开发.SQL语言分为3种类型: ...

  10. 【xsy2272】 与运算 状压dp

    题目大意:给你一个长度为$n$的序列$a$,我们定义$f_i$表示序列$a$前i项一次进行按位与运算后的值. 我们认为一个序列的价值为$\sum_{i=1}^{n}f_i$,现在你要重新排列序列$a$ ...