Swoole 异步mysql使用
<?php
class mysql {
private $param;
public $db;
public function __construct() {
$this->db = new swoole_mysql;
$this->param = array(
'host' => '127.0.0.1',
'user' => 'root',
'password' => '123',
'database' => 'test',
);
} public function exec($sql) {
$this->db->connect($this->param, function ($db, $result) use ($sql) {
if ($result === false) {
echo "连接数据库失败 : 错误代码:" . $db->connect_errno . PHP_EOL . $db->connect_error;
return false;
}
$db->query($sql, function ($db, $res) {
if ($res === false) {
// error属性获得错误信息,errno属性获得错误码
echo "sql语句执行错误 : " . $db->error;
} else if ($res === true) {
// 非查询语句 affected_rows属性获得影响的行数,insert_id属性获得Insert操作的自增ID
echo "sql语句执行成功,影响行数 : " . $db->affected_rows; } else {
//查询语句 $result为结果数组
var_dump($res); }
$db->close();
});
});
}
} $mysql = new mysql();
使用异步mysql好处 :
- 防止代码阻塞,提高代码效率
适用场合:
- 不涉及共享资源,或对共享资源只读,即非互斥操作
- 没有时序上的严格关系
- 不需要原子操作,或可以通过其他方式控制原子性
- 常用于IO操作等耗时操作,因为比较影响客户体验和使用性能
- 不影响主线程逻辑
Swoole 异步mysql使用的更多相关文章
- swoole编译安装/数据库连接池/异步mysql客户端
一.编译安装php5.6 0.安装必要软件 http://www.cnblogs.com/itfenqing/p/6055138.html 1.下载php5.6.30 http://php.net/d ...
- php swoole异步处理mysql
php swoole异步处理mysql <pre>//创建websocket服务器对象,监听0.0.0.0:9509端口//异步测试$ws = new swoole_websocket_s ...
- 17.swoole学习笔记--异步mysql操作
<?php //异步mysql操作 $db=new swoole_mysql(); $config=[ 'host'=>'192.168.10.31', 'user'=>'zouke ...
- 使用Swoole测试MySQL在特定SQL下的并发性能
场景描述 从全文检索或者缓存中获取ID,根据ID查询数据库获取基础信息,进行页面展示 SQL:select * from table where id in(id1,id2,id3...id40) 此 ...
- swoole组件----mysql查询,插入数据
注意!任何swoole函数都应该包含在go(function(){}) 经典查询方法query() go(function (){ $swoole_mysql = new Swoole\Corouti ...
- swoole异步任务数据报表生成
<?php include 'vendor/autoload.php'; class server { private $serv; private $db; /** * [__construc ...
- swoole异步群发模板消息
1.用的是TP5.1的框架,swoole分成一个客户端发送接收消息,一个服务器负责处理信息 服务端代码,服务器要先安装swoole拓展,用 php server.php 启动进程监听 <?php ...
- 用swoole实现mysql的连接池--摘自https://github.com/153734009/doc/blob/master/php/mysql_pool.php
<?php $serv = new swoole_server("0.0.0.0", 9508); $serv->set(['worker_num'=>1 ...
- 在tornado中使用异步mysql操作
在使用tornado框架进行开发的过程中,发现tornado的mysql数据库操作并不是一步的,造成了所有用户行为的堵塞.tornado本身是一个异步的框架,要求所有的操作都应该是异步的,但是数据库这 ...
随机推荐
- pandoc 基本使用
pandoc –s 输入文件.后缀 –o 输出文件.后缀
- Mina2 udp--zhengli
一.包与类名. 1.所有类和方法严格使用驼峰法命名.例:SSLFilter 更名为 SslFilter.NIO传输类在命名时增加 Nio 前缀.因为NIO 并不是 socket/datagram 传输 ...
- [转][MVC]更新 dll 后版本不匹配的问题
<dependentAssembly> <assemblyIdentity name="Newtonsoft.Json" publicKeyToken=" ...
- WebSocket 跨域
http://www.cnblogs.com/joeymary/p/5259464.html
- 第7章 网络层协议(3)_ARP协议
3. ARP协议 3.1 ARP(Address Resolution Protocol)协议的工作过程和安全隐患 (1)计算机A和C通信之前,先检查ARP缓存中是否有计算机C的IP地址对应的MAC地 ...
- python操作符与流程控制
操作符: 算术运算: + - * / % // ** 逻辑运算:and or not 身份运算: is not is 不可变数据类型:数字 字符串 字典key 可变数据 ...
- vue 要点
一: 1. 如果在实例创建之后添加新的属性到实例上,它不会触发视图更新. 2. v-show 的元素会始终渲染并保持在 DOM 中.v-show 是简单的切换元素的 CSS 属性 display.
- Java第一次上机实验源代码
小学生计算题: package 第一次上机实验_; import java.util.*; public class 小学计算题 { public static void main(String[] ...
- python函数的创建和函数参数
[1]#函数的作用:1.减少重复代码 2.方便修改,更容易扩展3.保持代码的一致性 [2]#函数简单的定义规则: 函数代码块以def关键词开头,后接函数标识符名称和圆括号(),任何传入参数和自变量必须 ...
- python 27 获取时区转换后的时间
python3的datetime有timezone属性,这里介绍python2.7环境下,获取时区转换后的时间. 利用第三方插件,pytz,没有安装的话安装一下. #!/usr/bin/env pyt ...