Metodo connect
void AsyncTcpConnection::connect()
Esegue un'operazione di connessione asincrona. Questo metodo restituirà immediatamente.
Attenzione: Se è necessario impostare il callback onError per la connessione asincrona, dovrebbe essere impostato prima di eseguire connect, altrimenti il callback onError potrebbe non essere attivato, ad esempio nel seguente esempio il callback onError potrebbe non attivarsi e non riuscirà a catturare l'evento di fallimento della connessione asincrona.
$connection = new AsyncTcpConnection('tcp://baidu.com:81');
// Non è stato impostato il callback onError al momento della connessione
$connection->connect();
$connection->onError = function($connection, $err_code, $err_msg)
{
echo "$err_code, $err_msg";
};
Parametri
Nessun parametro
Valore di ritorno
Nessun valore di ritorno
Esempio di proxy Mysql
use Workerman\Worker;
use Workerman\Connection\AsyncTcpConnection;
use Workerman\Connection\TcpConnection;
require_once __DIR__ . '/vendor/autoload.php';
// Indirizzo mysql reale, supponiamo che qui sia la porta 3306 della macchina locale
$REAL_MYSQL_ADDRESS = 'tcp://127.0.0.1:3306';
// Il proxy ascolta sulla porta locale 4406
$proxy = new Worker('tcp://0.0.0.0:4406');
$proxy->onConnect = function(TcpConnection $connection)
{
global $REAL_MYSQL_ADDRESS;
// Stabilire una connessione asincrona al server mysql reale
$connection_to_mysql = new AsyncTcpConnection($REAL_MYSQL_ADDRESS);
// Quando arrivano dati sulla connessione mysql, inoltra alla connessione del client corrispondente
$connection_to_mysql->onMessage = function(AsyncTcpConnection $connection_to_mysql, $buffer)use($connection)
{
$connection->send($buffer);
};
// Quando la connessione mysql si chiude, chiudi la corrispondente connessione proxy al client
$connection_to_mysql->onClose = function(AsyncTcpConnection $connection_to_mysql)use($connection)
{
$connection->close();
};
// Quando si verifica un errore sulla connessione mysql, chiudi la corrispondente connessione proxy al client
$connection_to_mysql->onError = function(AsyncTcpConnection $connection_to_mysql)use($connection)
{
$connection->close();
};
// Esegui la connessione asincrona
$connection_to_mysql->connect();
// Quando il client invia dati, inoltra alla connessione mysql corrispondente
$connection->onMessage = function(TcpConnection $connection, $buffer)use($connection_to_mysql)
{
$connection_to_mysql->send($buffer);
};
// Quando la connessione del client si chiude, chiudi la corrispondente connessione mysql
$connection->onClose = function(TcpConnection $connection)use($connection_to_mysql)
{
$connection_to_mysql->close();
};
// Quando si verifica un errore sulla connessione del client, chiudi la corrispondente connessione mysql
$connection->onError = function(TcpConnection $connection)use($connection_to_mysql)
{
$connection_to_mysql->close();
};
};
// Esegui il worker
Worker::runAll();
Test
mysql -uroot -P4406 -h127.0.0.1 -p
Benvenuto nel monitor MySQL. I comandi terminano con ; o \g.
Il tuo ID di connessione MySQL è 25004
Versione del server: 5.5.31-1~dotdeb.0 (Debian)
Copyright (c) 2000, 2013, Oracle e/o le sue affiliate. Tutti i diritti riservati.
Oracle è un marchio registrato di Oracle Corporation e/o delle sue
affiliate. Altri nomi possono essere marchi dei rispettivi
proprietari.
Digita 'help;' o '\h' per aiuto. Digita '\c' per cancellare l'attuale dichiarazione d'input.
mysql>