workerman中使用ThinkPHP的数据库类
2026-07-28
44
0

1、安装

composer require topthink/think-orm


2、使用

新增数据库配置文件 Applications/config/database.php

<?php
return [
    'default'         => 'mysql',
    'connections'     => [
        'mysql' => [
            'type'            => 'mysql',
            'hostname'        => '127.0.0.1',
            'database'        => 'database',
            'username'        => 'username',
            'password'        => 'password',
            'hostport'        => '3306',
            'params'          => [],
            'charset'         => 'utf8mb4',
            'prefix'          => '',
            'deploy'          => 0,
            'rw_separate'     => false,
            'master_num'      => 1,
            'slave_no'        => '',
            'fields_strict'   => true,
            'break_reconnect' => true,   // 是否需要断线重连
            'trigger_sql'     => false,
            'fields_cache'    => false,
        ],
    ],
]; 


在之前的队列测试文件中测试数据库使用

<?php
use think\facade\Db;
use app\model\Admin;
use Workerman\Worker;
use Workerman\RedisQueue\Client;
$queue_config = require __DIR__ . '/../config/queue.php';
$database_config = require __DIR__ . '/../config/database.php';

$worker = new Worker();
$worker->name = 'StartQueueWorker';
$worker->count = 1;

$worker->onWorkerStart = function () use ($queue_config, $database_config) {
    Db::setConfig($database_config);
    
    $client = new Client($queue_config['type'].'://'.$queue_config['host'].':'.$queue_config['port'], [
        'auth'          => $queue_config['password'],       //密码
        'db'            => $queue_config['select'],         //数据库db
        'max_attempts'  => $queue_config['max_attempts'],   //消费失败后重试次数
        'retry_seconds' => $queue_config['retry_seconds'],  //重试时间间隔
    ]);
    
    $client->subscribe('user-1', function($data){
        $admin = Db::name('admin')->find(1);   //测试代码
        // $admin = Admin::find(1);   //或者使用模型
        var_dump($admin);
        
        printf(json_encode($data, JSON_UNESCAPED_UNICODE));
        echo "\n\n";
    });
};




上一篇:没有了