13、Workerman 基本使用 - MySQL 组件

作者: 温新

图书: 【Workerman 基本使用】

阅读: 232

时间: 2024-05-19 09:46:20

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