connect Methode

void AsyncTcpConnection::connect()

Führt eine asynchrone Verbindungsoperation aus. Diese Methode gibt sofort zurück.

Hinweis: Wenn der onError-Callback für die asynchrone Verbindung festgelegt werden muss, sollte dies vor der Ausführung von connect erfolgen, andernfalls wird der onError-Callback möglicherweise nicht ausgelöst. Im folgenden Beispiel kann der onError-Callback möglicherweise nicht ausgelöst werden, was dazu führt, dass das Ereignis des Fehlschlags der asynchronen Verbindung nicht erfasst wird.

$connection = new AsyncTcpConnection('tcp://baidu.com:81');
// onError-Callback wurde beim Verbindungsaufbau noch nicht gesetzt
$connection->connect();
$connection->onError = function($connection, $err_code, $err_msg)
{
    echo "$err_code, $err_msg";
};

Parameter

Keine Parameter

Rückgabewert

Kein Rückgabewert

Beispiel Mysql-Proxy

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

// Tatsächliche mysql-Adresse, angenommen, dies ist der lokale Port 3306
$REAL_MYSQL_ADDRESS = 'tcp://127.0.0.1:3306';

// Proxy hört auf lokalem Port 4406
$proxy = new Worker('tcp://0.0.0.0:4406');

$proxy->onConnect = function(TcpConnection $connection)
{
    global $REAL_MYSQL_ADDRESS;
    // Asynchron eine Verbindung zum tatsächlichen mysql-Server herstellen
    $connection_to_mysql = new AsyncTcpConnection($REAL_MYSQL_ADDRESS);
    // Wenn die mysql-Verbindung Daten sendet, an die entsprechende Client-Verbindung weiterleiten
    $connection_to_mysql->onMessage = function(AsyncTcpConnection $connection_to_mysql, $buffer)use($connection)
    {
        $connection->send($buffer);
    };
    // Wenn die mysql-Verbindung geschlossen wird, die entsprechende Proxy-Verbindung zum Client schließen
    $connection_to_mysql->onClose = function(AsyncTcpConnection $connection_to_mysql)use($connection)
    {
        $connection->close();
    };
    // Wenn ein Fehler bei der mysql-Verbindung auftritt, die entsprechende Proxy-Verbindung zum Client schließen
    $connection_to_mysql->onError = function(AsyncTcpConnection $connection_to_mysql)use($connection)
    {
        $connection->close();
    };
    // Asynchrone Verbindung herstellen
    $connection_to_mysql->connect();

    // Wenn der Client Daten sendet, an die entsprechende mysql-Verbindung weiterleiten
    $connection->onMessage = function(TcpConnection $connection, $buffer)use($connection_to_mysql)
    {
        $connection_to_mysql->send($buffer);
    };
    // Wenn die Client-Verbindung unterbrochen wird, die entsprechende mysql-Verbindung unterbrechen
    $connection->onClose = function(TcpConnection $connection)use($connection_to_mysql)
    {
        $connection_to_mysql->close();
    };
    // Wenn ein Fehler bei der Client-Verbindung auftritt, die entsprechende mysql-Verbindung unterbrechen
    $connection->onError = function(TcpConnection $connection)use($connection_to_mysql)
    {
        $connection_to_mysql->close();
    };

};
// Worker ausführen
Worker::runAll();

Test

mysql -uroot -P4406 -h127.0.0.1 -p

Willkommen beim MySQL-Überwachungsmonitor. Befehle enden mit ; oder \g.
Ihre MySQL-Verbindungs-ID ist 25004
Serverversion: 5.5.31-1~dotdeb.0 (Debian)

Copyright (c) 2000, 2013, Oracle und/oder dessen Tochtergesellschaften. Alle Rechte vorbehalten.

Oracle ist eine eingetragene Marke von Oracle Corporation und/oder deren
Tochtergesellschaften. Andere Namen können Marken ihrer jeweiligen
Eigentümer sein.

Geben Sie 'help;' oder '\h' ein, um Hilfe zu erhalten. Geben Sie '\c' ein, um die aktuelle Eingabedatei zu löschen.

mysql>