Workerman最簡示例

Workerman 是一款純 PHP 開發的開源高性能的 PHP socket 服務框架。php

官方文檔:http://doc.workerman.net/html

Workerman 爲 MySQL 代理

示例:http://doc.workerman.net/async-tcp-connection/connect.htmlmysql

<?php

use Workerman\Worker;
use Workerman\Connection\AsyncTcpConnection;
require_once './Workerman/Autoloader.php';

// 建立一個Worker監聽2345端口,使用http協議通信
$tcp_worker = new Worker("tcp://0.0.0.0:2345");

// 啓動4個進程對外提供服務
$tcp_worker->count = 4;

$tcp_worker->onConnect = function ($connection) {
    echo 'new connection '.$connection->getRemoteIp().PHP_EOL;

    // 異步創建一個到實際mysql服務器的鏈接
    $connection_to_mysql = new AsyncTcpConnection('tcp://172.17.0.3:3306');

    // mysql鏈接發來數據時,轉發給對應客戶端的鏈接
    $connection_to_mysql->onMessage = function ($connection_to_mysql, $data) use ($connection) {
        $connection->send($data);
    };
    // mysql鏈接關閉時,關閉對應的代理到客戶端的鏈接
    $connection_to_mysql->onClose = function($connection_to_mysql) use ($connection) {
        $connection->close();
    };

    // 執行異步鏈接
    $connection_to_mysql->connect();

    // 客戶端發來數據時,轉發給對應的mysql鏈接
    $connection->onMessage = function($connection, $data) use ($connection_to_mysql) {
          $connection_to_mysql->send($data);
    };
    // 客戶端鏈接斷開時,斷開對應的mysql鏈接
    $connection->onClose = function($connection) use ($connection_to_mysql) {
        $connection_to_mysql->close();
    };
};

// 接收到瀏覽器發送的數據時回覆hello world給瀏覽器
$tcp_worker->onMessage = function($connection, $data)
{
    // 向瀏覽器發送hello world
    // $connection->send('hello world');
    // $connection->close();
    echo $data;
};

// 運行worker
Worker::runAll();

使用 Navicat 鏈接測試:sql

相關文章
相關標籤/搜索