workerman mysql_workerman/mysql

Workerman/MySQL

说明

常驻内存的程序在使用mysql时经常会遇到mysql gone away的错误,这个是由于程序与mysql的连接长时间没有通讯,连接被mysql服务端踢掉导致。本数据库类可以解决这个问题,当发生mysql gone away错误时,会自动重试一次。

依赖的扩展

该mysql类依赖pdo和pdo_mysql两个扩展,缺少扩展会报Undefined class constant 'MYSQL_ATTR_INIT_COMMAND' in ....错误。

命令行运行php -m会列出所有php cli已安装的扩展,如果没有pdo 或者 pdo_mysql,请自行安装。

centos系统

PHP5.x

yum install php-pdo

yum install php-mysql

PHP7.x

yum install php70w-pdo_dblib.x86_64

yum install php70w-mysqlnd.x86_64

如果找不到包名,请尝试用yum search php mysql查找

ubuntu/debian系统

PHP5.x

apt-get install php5-mysql

PHP7.x

apt-get install php7.0-mysql

如果找不到包名,请尝试用apt-cache search php mysql查找

以上方法无法安装?

安装 Workerman/MySQL

方法1:

可以通过composer安装,命令行运行以下命令(composer源在国外,安装过程可能会非常慢)。

composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/

composer require workerman/mysql

上面命令成功后会生成vendor目录,然后在项目中引入vendor下的autoload.php。

require_once __DIR__ . '/vendor/autoload.php';

方法2:

下载源码,解压后的目录放到自己项目中(位置任意),直接require源文件。

require_once '/your/path/of/mysql-master/src/Connection.php';

注意

强烈建议在onWorkerStart回调中初始化数据库连接,避免在Worker::runAll();运行前就初始化连接,在Worker::runAll();运行前初始化的连接属于主进程,子进程会继承这个连接,主进程和子进程共用相同的数据库连接会导致错误。

示例

use Workerman\Worker;

require_once __DIR__ . '/Workerman/Autoloader.php';

require_once __DIR__ . '/vendor/autoload.php';

$worker = new Worker('websocket://0.0.0.0:8484');

$worker->onWorkerStart = function($worker){

// 将db实例存储在全局变量中(也可以存储在某类的静态成员中)

global $db;

$db = new \Workerman\MySQL\Connection('host', 'port', 'user', 'password', 'db_name');

};

$worker->onMessage = function($connection, $data){

// 通过全局变量获得db实例

global $db;

// 执行SQL

$all_tables = $db->query('show tables');

$connection->send(json_encode($all_tables));

};

// 运行worker

Worker::runAll();

具体MySQL/Connection用法

// 初始化db连接

$db = new \Workerman\MySQL\Connection('host', 'port', 'user', 'password', 'db_name');

// 获取所有数据

$db->select('ID,Sex')->from('Persons')->where('sex= :sex AND ID = :id')->bindValues(array('sex'=>'M', 'id' => 1))->query();

//等价于

$db->select('ID,Sex')->from('Persons')->where("sex= 'M' AND ID = 1")->query();

//等价于

$db->query("SELECT ID,Sex FROM `Persons` WHERE sex='M' AND ID = 1");

// 获取一行数据

$db->select('ID,Sex')->from('Persons')->where('sex= :sex')->bindValues(array('sex'=>'M'))->row();

//等价于

$db->select('ID,Sex')->from('Persons')->where("sex= 'M' ")->row();

//等价于

$db->row("SELECT ID,Sex FROM `Persons` WHERE sex='M'");

// 获取一列数据

$db->select('ID')->from('Persons')->where('sex= :sex')->bindValues(array('sex'=>'M'))->column();

//等价于

$db->select('ID')->from('Persons')->where("sex= 'F' ")->column();

//等价于

$db->column("SELECT `ID` FROM `Persons` WHERE sex='M'");

// 获取单个值

$db->select('ID')->from('Persons')->where('sex= :sex')->bindValues(array('sex'=>'M'))->single();

//等价于

$db->select('ID')->from('Persons')->where("sex= 'F' ")->single();

//等价于

$db->single("SELECT ID FROM `Persons` WHERE sex='M'");

// 复杂查询

$db->select('*')->from('table1')->innerJoin('table2','table1.uid = table2.uid')->where('age > :age')->groupBy(array('aid'))->having('foo="foo"')->orderByASC/*orderByDESC*/(array('did'))

->limit(10)->offset(20)->bindValues(array('age' => 13));

// 等价于

$db->query('SELECT * FROM `table1` INNER JOIN `table2` ON `table1`.`uid` = `table2`.`uid`

WHERE age > 13 GROUP BY aid HAVING foo="foo" ORDER BY did LIMIT 10 OFFSET 20');

// 插入

$insert_id = $db->insert('Persons')->cols(array(

'Firstname'=>'abc',

'Lastname'=>'efg',

'Sex'=>'M',

'Age'=>13))->query();

等价于

$insert_id = $db->query("INSERT INTO `Persons` ( `Firstname`,`Lastname`,`Sex`,`Age`)

VALUES ( 'abc', 'efg', 'M', 13)");

// 更新

$row_count = $db->update('Persons')->cols(array('sex'))->where('ID=1')

->bindValue('sex', 'F')->query();

// 等价于

$row_count = $db->update('Persons')->cols(array('sex'=>'F'))->where('ID=1')->query();

// 等价于

$row_count = $db->query("UPDATE `Persons` SET `sex` = 'F' WHERE ID=1");

// 删除

$row_count = $db->delete('Persons')->where('ID=9')->query();

// 等价于

$row_count = $db->query("DELETE FROM `Persons` WHERE ID=9");

// 事务

$db->beginTrans();

....

$db->commitTrans(); // or $db->rollBackTrans();

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/440876.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【LeetCode - 279】完全平方数(四平方和定理,数论,图论,dp)

题干: 给定正整数 n,找到若干个完全平方数(比如 1, 4, 9, 16, ...)使得它们的和等于 n。你需要让组成和的完全平方数的个数最少。 示例 1: 输入: n 12 输出: 3 解释: 12 4 4 4. 示例 2: 输入: n 13 输出: 2 解释: 13 …

C++中string类的length()与size()方法和C语言的strlen()函数有什么区别?

直接上代码段&#xff1a; char buf[256]{0}; buf[0]a; buf[2]v; buf[3]h;string strTest(buf,6); cout<<"strTest[0]:"<<(uint32_t)strTest[0]<<"_"<<(uint32_t)strTest[1]<<"_"<<(uint32_t)strTest[2]&l…

nutch mysql solr_Nutch2.1+mysql+solr3.6.1+中文网站抓取

1、mysql 数据库配置 linux mysql安装步骤省略。 创建数据库与表 [sql] view plaincopyprint? CREATE DATABASE nutch DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci; CREATE TABLE webpage( id varchar (767) CHARACTER SET latin1 NOT N1、mysql 数据库配置l…

【计蒜客信息学模拟赛1月月赛 - D】Wish(dp计数,数位)

题干&#xff1a; 如果一个数大于等于 10且任意连续两位都是质数&#xff0c;那么就称之为 Wish 数。当然&#xff0c;第一个 Wish 数是 11。 比如 97&#xff0c;111&#xff0c;131&#xff0c;119 都是 Wish 数&#xff0c;而 12&#xff0c;136 则不是。 问第 N 个 Wish…

mysql8 授权远程登录_MySQL8 远程授权访问

在测试环境&#xff0c;想实现MySQL 8 数据库的远程访问授权。传统的方法已经不行&#xff0c;报1064错误GRANT ALL PRIVILEGES ON *.* TO root% IDENTIFIED BY 123456 WITH GRANT OPTION;ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that co…

【计蒜客信息学模拟赛1月月赛 - B】蒜头套圈圈(贪心,前缀最大值)

题干&#xff1a; 蒜头去嘉年华玩儿套圈圈&#xff0c;是这么玩儿的。有一些瓶口口径不同的啤酒瓶&#xff0c;瓶子里面有一些奖品。如果蒜头用手上的圈圈套中了啤酒瓶&#xff0c;那么奖品就归他了。 假设蒜头君无限精准&#xff0c;指哪儿打哪儿&#xff0c;并且蒜头了解到…

centos web 访问mysql_Centos7安装Web服务器--Mysql5.7.12安装

我是勤劳的搬运工……源码装了好多次Mysql&#xff0c;终于成功了……因为安装mysql需要对应的boost文件(必须是相应版本&#xff0c;不能高也不能低)&#xff0c;所以&#xff0c;为了不再麻烦的搜索对应的boost文件&#xff0c;下载包含boost的Mysql包2.查看是否有编译器# gc…

【计蒜客 - 蓝桥训练】轻重搭配(贪心,STLset 或 二分)

题干&#xff1a; n 个同学去动物园参观&#xff0c;原本每人都需要买一张门票&#xff0c;但售票处推出了一个优惠活动&#xff0c;一个体重为 xx 的人可以和体重至少为 2x2x 配对&#xff0c;这样两人只需买一张票。现在给出了 nn 个人的体重&#xff0c;请你计算他们最少需…

phpstudy mysql5.1_linux下mysql5.1 和 5.7安装教程详解

本文主要和大家分享linux下mysql 5.1 和 5.7的安装教程&#xff0c;希望能帮助到大家。以下内容的操作系统为&#xff1a;centos 6.7yum安装mysql 5.1.73卸载系统自带的mysql执行以下命令查看是否有自带mysql:rpm -qa | grep mysql如果发现有输出结果,那么执行以下命令依次删除…

【牛客 - 368C】流星雨(概率dp,乘法逆元)

题干&#xff1a; 现在一共有n天&#xff0c;第i天如果有流星雨的话&#xff0c;会有wiwi颗流星雨。 第i天有流星雨的概率是pipi。 如果第一天有流星雨了&#xff0c;那么第二天有流星雨的可能性是p2Pp2P&#xff0c;否则是p2p2。相应的&#xff0c;如果第i−1 (i≥2)i−1 (…

mysql workbench 无法编辑_MySQL Workbench编辑表数据是只读的

14 个答案:答案 0 :(得分&#xff1a;60)我假设桌子有一把主键。首先尝试运行unlock tables命令以查看是否修复了它。如果所有其他方法都失败了&#xff0c;您可以更改表以创建具有自动增量的新主键列&#xff0c;并希望能够修复它。一旦完成&#xff0c;您应该能够毫无问题地删…

【计蒜客 - 蓝桥训练】炮台实验(数学期望,期望dp)

题干&#xff1a; 蒜头君在玩一个战争模拟游戏&#xff0c;他有高度为 1,2,3,\ldots ,n1,2,3,…,n 的炮台各一个&#xff0c;他需要把这 nn 个炮台从左往右排成一行&#xff0c;并且炮口都朝向右边。 在这个游戏中&#xff0c;所有炮台发射的炮弹会摧毁前方所有高度比自己低的…

mysql本身主从_Mysql主从复制

Mysql环境准备#下载Mysqlwget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm如果报错: -bash: wget: 未找到命令安装插件 yum -y install wget安装mysql-community-release-el7-5.noarch.rpmsudo rpm -ivh mysql-community-release-el7-5.noarch.rpm安装Mys…

【蓝桥杯官网试题 - 算法提高 】P0404(模拟)

题干&#xff1a; 计算一个无符号整数的阿尔法乘积。对于一个无符号整数x来说&#xff0c;它的阿尔法乘积是这样来计算的&#xff1a;如果x是一个个位数&#xff0c;那么它的阿尔法乘积就是它本身&#xff1b;否则的话&#xff0c;x的阿尔法乘积就等于它的各位非0的数字相乘所…

phison主控ps3111量产工具_从固态硬盘拆解看门道 深入解读闪存编号和主控容量...

一篇固态硬盘的评测是否有水平&#xff0c;不光是看测试跑分是否详细&#xff0c;更应有针对成绩的解读以及硬件拆解和结构上的分析。毕竟跑分大家都会跑&#xff0c;必须拿出其他人不知道的内存才能真正吸引读者。因为大多数固态硬盘拆解会失去保修&#xff0c;所以拆解是网友…

*【计蒜客 - 蓝桥训练】人以群分(二分 + dp)

题干&#xff1a; 某班有 nn 个同学&#xff0c;每个同学有一个外向程度 a_iai​。由于要进行某个活动&#xff0c;需要把他们分成若干个小组&#xff0c;每个小组的人数至少为 mm 人。不同外向程度的人在一个小组会产生不开心值&#xff0c;定义一个小组的不开心值为组内成员…

alot英文怎么读_【乐学】“原来如此”用英文怎么说?

英语中的“原来如此”则有几种不同的表达下面就让我们一起来看看吧&#xff01;I seeI see 作为最地道的表达&#xff0c;使用起来准没错。这是来自《柯林斯词典》的释义&#xff1a;You can say "I see" to indicate that you understand what someone is telling y…

【牛客 - 318E】爱摸鱼的Dillonh(数学,暴力,细节)

题干&#xff1a; “我不做人啦&#xff0c;jojo&#xff01;” “Dillonh起来回答问题&#xff01;” “啊&#xff1f;”沉迷于jojo的Dillonh又一次上课摸鱼被老师抓到了&#xff0c;他慌忙地抬起头看着讲台上火冒三丈的老师。 “给你一个数n&#xff0c;现在要找到一个集…

特殊mac地址文档_Mac颜值秒杀Win10?五款神器让Win10化身macOS

微软在Win10上捣鼓已经不是一天两天了&#xff0c;可结果……还是难以令人满意&#xff0c;特别是不伦不类的UI&#xff01;其实Win10的底子还是不错的&#xff0c;新技术用了不少&#xff0c;外观也比之前更有颜值&#xff0c;但……总感觉缺了点什么&#xff01;有没有羡慕隔…

【hihocoder - offer编程练习赛60 A】hohahola(贪心,二分)

题干&#xff1a; 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 有一种叫作hohahola的饮料&#xff0c;售价是X元一瓶。小Hi非常喜欢这种饮料&#xff0c;但是他现在身无分文。 不过小Hi有N张优惠券&#xff0c;买hohahola时每瓶最多使用一张优惠券&#xff0c…