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();
                请登录后再评论