13、Workerman 基本使用 - MySQL 组件
hi,我是温新,一名 PHPer
常驻内存的程序在使用 MySQL 时经常会遇到mysql gone away
的错误,这个是由于程序与 MySQL 的连接长时间没有通讯,连接被 MySQL 服务端踢掉导致。
使用 Workerman/MySQL
可以解决此问题,当发生 mysql gone away
错误时,会自动重启一次。
1、安装 mysql 组件
$ composer require workerman/mysql --ignore-platform-req=ext-pthreads
要不要添加 --ignore-platform-req=ext-pthreads
,需要根据你的环境来确定。
2、基本使用
<?php
/**
* db.php
*
* mysql 使用
*/
use Workerman\Worker;
use Workerman\Connection\TcpConnection;
require_once __DIR__ . '/vendor/autoload.php';
$worker = new Worker('tcp://0.0.0.0:8888');
$db = null;
$worker->onWorkerStart = function (Worker $worker) use (&$db) {
$db = new \Workerman\MySQL\Connection('127.0.0.1', '3306', 'root', '123456', 'test1');
};
$worker->onMessage = function (TcpConnection $connection, $data) use (&$db) {
// 添加数据
// $insertIds = $db->insert('demo01')->cols([
// 'username' => 'wangmeili',
// 'mobile' => '13900001111',
// ])->query();
// $connection->send($insertIds);
// 更新数据
// $rowCount = $db->update('demo01')->cols(['username'=>'wangxiaoli'])->where('ID=1')->query();
// $connection->send($rowCount);
// 查询数据
// $rows = $db->from('demo01')->select('*')->query();
// echo $connection->send(json_encode($rows));
// 删除数据
// $delCount = $db->delete('demo01')->where('id=1')->query();
// $connection->send($delCount);
};
Worker::runAll();
请登录后再评论