Método connect

void AsyncTcpConnection::connect()

Ejecuta una operación de conexión asincrónica. Este método devuelve de inmediato.

Nota: Si necesita establecer la función de devolución de llamada onError para la conexión asincrónica, debe configurarla antes de ejecutar connect, de lo contrario, la función de devolución de llamada onError puede no ser activada. Por ejemplo, en el siguiente caso, la devolución de llamada onError puede no ser activada y no se capturará el evento de falla en la conexión asincrónica.

$connection = new AsyncTcpConnection('tcp://baidu.com:81');
// Al ejecutar la conexión, la devolución de llamada onError aún no está configurada
$connection->connect();
$connection->onError = function($connection, $err_code, $err_msg)
{
    echo "$err_code, $err_msg";
};

Parámetros

Sin parámetros

Valor de retorno

Sin valor de retorno

Ejemplo de Proxy Mysql

use Workerman\Worker;
use Workerman\Connection\AsyncTcpConnection;
use Workerman\Connection\TcpConnection;
require_once __DIR__ . '/vendor/autoload.php';

// Dirección mysql real, supongamos que aquí está el puerto 3306 de la máquina local
$REAL_MYSQL_ADDRESS = 'tcp://127.0.0.1:3306';

// Proxy escucha en el puerto local 4406
$proxy = new Worker('tcp://0.0.0.0:4406');

$proxy->onConnect = function(TcpConnection $connection)
{
    global $REAL_MYSQL_ADDRESS;
    // Establece una conexión asincrónica al servidor mysql real
    $connection_to_mysql = new AsyncTcpConnection($REAL_MYSQL_ADDRESS);
    // Cuando la conexión mysql envía datos, se reenvían a la conexión del cliente correspondiente
    $connection_to_mysql->onMessage = function(AsyncTcpConnection $connection_to_mysql, $buffer)use($connection)
    {
        $connection->send($buffer);
    };
    // Cuando la conexión mysql se cierra, se cierra la conexión correspondiente del proxy al cliente
    $connection_to_mysql->onClose = function(AsyncTcpConnection $connection_to_mysql)use($connection)
    {
        $connection->close();
    };
    // Cuando ocurre un error en la conexión mysql, se cierra la conexión correspondiente del proxy al cliente
    $connection_to_mysql->onError = function(AsyncTcpConnection $connection_to_mysql)use($connection)
    {
        $connection->close();
    };
    // Ejecuta la conexión asincrónica
    $connection_to_mysql->connect();

    // Cuando el cliente envía datos, se reenvían a la conexión mysql correspondiente
    $connection->onMessage = function(TcpConnection $connection, $buffer)use($connection_to_mysql)
    {
        $connection_to_mysql->send($buffer);
    };
    // Cuando la conexión del cliente se desconecta, se desconecta la conexión mysql correspondiente
    $connection->onClose = function(TcpConnection $connection)use($connection_to_mysql)
    {
        $connection_to_mysql->close();
    };
    // Cuando ocurre un error en la conexión del cliente, se desconecta la conexión mysql correspondiente
    $connection->onError = function(TcpConnection $connection)use($connection_to_mysql)
    {
        $connection_to_mysql->close();
    };

};
// Ejecutar worker
Worker::runAll();

Prueba

mysql -uroot -P4406 -h127.0.0.1 -p

Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 25004
Server version: 5.5.31-1~dotdeb.0 (Debian)

Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>