中国建设的网站,介绍小说的网站模板下载,中小企业公司简介范本,越南注册公司需要什么条件Workerman/MySQL说明常驻内存的程序在使用mysql时经常会遇到mysql gone away的错误#xff0c;这个是由于程序与mysql的连接长时间没有通讯#xff0c;连接被mysql服务端踢掉导致。本数据库类可以解决这个问题#xff0c;当发生mysql gone away错误时#xff0c;会自动重试…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.xyum install php-pdoyum install php-mysqlPHP7.xyum install php70w-pdo_dblib.x86_64yum install php70w-mysqlnd.x86_64如果找不到包名请尝试用yum search php mysql查找ubuntu/debian系统PHP5.xapt-get install php5-mysqlPHP7.xapt-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));};// 运行workerWorker::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(sexM, id 1))-query();//等价于$db-select(ID,Sex)-from(Persons)-where(sex M AND ID 1)-query();//等价于$db-query(SELECT ID,Sex FROM Persons WHERE sexM AND ID 1);// 获取一行数据$db-select(ID,Sex)-from(Persons)-where(sex :sex)-bindValues(array(sexM))-row();//等价于$db-select(ID,Sex)-from(Persons)-where(sex M )-row();//等价于$db-row(SELECT ID,Sex FROM Persons WHERE sexM);// 获取一列数据$db-select(ID)-from(Persons)-where(sex :sex)-bindValues(array(sexM))-column();//等价于$db-select(ID)-from(Persons)-where(sex F )-column();//等价于$db-column(SELECT ID FROM Persons WHERE sexM);// 获取单个值$db-select(ID)-from(Persons)-where(sex :sex)-bindValues(array(sexM))-single();//等价于$db-select(ID)-from(Persons)-where(sex F )-single();//等价于$db-single(SELECT ID FROM Persons WHERE sexM);// 复杂查询$db-select(*)-from(table1)-innerJoin(table2,table1.uid table2.uid)-where(age :age)-groupBy(array(aid))-having(foofoo)-orderByASC/*orderByDESC*/(array(did))-limit(10)-offset(20)-bindValues(array(age 13));// 等价于$db-query(SELECT * FROM table1 INNER JOIN table2 ON table1.uid table2.uidWHERE age 13 GROUP BY aid HAVING foofoo ORDER BY did LIMIT 10 OFFSET 20);// 插入$insert_id $db-insert(Persons)-cols(array(Firstnameabc,Lastnameefg,SexM,Age13))-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(ID1)-bindValue(sex, F)-query();// 等价于$row_count $db-update(Persons)-cols(array(sexF))-where(ID1)-query();// 等价于$row_count $db-query(UPDATE Persons SET sex F WHERE ID1);// 删除$row_count $db-delete(Persons)-where(ID9)-query();// 等价于$row_count $db-query(DELETE FROM Persons WHERE ID9);// 事务$db-beginTrans();....$db-commitTrans(); // or $db-rollBackTrans();