Método connect

void AsyncTcpConnection::connect()

Realiza uma operação de conexão assíncrona. Este método retorna imediatamente.

Nota: Se for necessário definir um retorno de erro assíncrono, isso deve ser feito antes da execução do método connect, caso contrário, o retorno de erro assíncrono pode não ser disparado. Por exemplo, no trecho abaixo, o retorno de erro onError pode não ser acionado e o evento de falha de conexão assíncrona não pode ser capturado.

$connection = new AsyncTcpConnection('tcp://baidu.com:81');
// onError não está definido no momento da conexão
$connection->connect();
$connection->onError = function($connection, $err_code, $err_msg)
{
    echo "$err_code, $err_msg";
};

Parâmetros

Sem parâmetros

Valor de Retorno

Sem valor de retorno

Exemplo de proxy Mysql

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

// Endereço real do mysql, suponha que esteja na porta 3306 local
$REAL_MYSQL_ADDRESS = 'tcp://127.0.0.1:3306';

// Proxy escuta na porta 4406 local
$proxy = new Worker('tcp://0.0.0.0:4406');

$proxy->onConnect = function(TcpConnection $connection)
{
    global $REAL_MYSQL_ADDRESS;
    // Estabelece de forma assíncrona uma conexão com o servidor mysql real
    $connection_to_mysql = new AsyncTcpConnection($REAL_MYSQL_ADDRESS);
    // Quando a conexão mysql envia dados, eles são encaminhados para a conexão do cliente correspondente
    $connection_to_mysql->onMessage = function(AsyncTcpConnection $connection_to_mysql, $buffer) use ($connection)
    {
        $connection->send($buffer);
    };
    // Quando a conexão mysql é fechada, fecha a conexão de proxy correspondente para o cliente
    $connection_to_mysql->onClose = function(AsyncTcpConnection $connection_to_mysql) use ($connection)
    {
        $connection->close();
    };
    // Se ocorrer um erro na conexão mysql, fecha a conexão de proxy correspondente para o cliente
    $connection_to_mysql->onError = function(AsyncTcpConnection $connection_to_mysql) use ($connection)
    {
        $connection->close();
    };
    // Executa a conexão assíncrona
    $connection_to_mysql->connect();

    // Quando o cliente envia dados, eles são encaminhados para a conexão mysql correspondente
    $connection->onMessage = function(TcpConnection $connection, $buffer) use ($connection_to_mysql)
    {
        $connection_to_mysql->send($buffer);
    };
    // Quando a conexão do cliente é fechada, a conexão mysql correspondente também é fechada
    $connection->onClose = function(TcpConnection $connection) use ($connection_to_mysql)
    {
        $connection_to_mysql->close();
    };
    // Se ocorrer um erro na conexão do cliente, a conexão mysql correspondente também é fechada
    $connection->onError = function(TcpConnection $connection) use ($connection_to_mysql)
    {
        $connection_to_mysql->close();
    };
};
// Executa o worker
Worker::runAll();

Teste

mysql -uroot -P4406 -h127.0.0.1 -p

Bem-vindo ao monitor do MySQL. Os comandos terminam com ; ou \g.
Seu ID de conexão MySQL é 25004
Versão do servidor: 5.5.31-1~dotdeb.0 (Debian)

Copyright (c) 2000, 2013, Oracle and/or its affiliates. Todos os direitos reservados.

Oracle é uma marca comercial registrada da Oracle Corporation e/ou suas
afiliadas. Outros nomes podem ser marcas comerciais de seus respectivos
proprietários.

Digite 'help;' ou '\h' para obter ajuda. Digite '\c' para limpar a declaração de entrada atual.

mysql>