connect yöntemi

void AsyncTcpConnection::connect()

Asenkron bağlantı işlemini gerçekleştirir. Bu yöntem hemen döner.

Not: Asenkron bağlantının onError geri çağrısını ayarlamak gerekiyorsa, connect işleminden önce ayarlanmalıdır; aksi takdirde onError geri çağrısı tetiklenmeyebilir. Aşağıdaki örnekte onError geri çağrısı tetiklenemeyebilir ve asenkron bağlantı hatası olayını yakalayamayabilir.

$connection = new AsyncTcpConnection('tcp://baidu.com:81');
// Bağlantı gerçekleştirilmeden önce onError geri çağrısı ayarlanmamış
$connection->connect();
$connection->onError = function($connection, $err_code, $err_msg)
{
    echo "$err_code, $err_msg";
};

Parametreler

Parametre yok

Dönen Değer

Dönen değer yok

Örnek Mysql proxy

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

// Gerçek mysql adresi, buranın yerel makine 3306 portu olduğunu varsayalım
$REAL_MYSQL_ADDRESS = 'tcp://127.0.0.1:3306';

// Proxy, yerel 4406 portunu dinliyor
$proxy = new Worker('tcp://0.0.0.0:4406');

$proxy->onConnect = function(TcpConnection $connection)
{
    global $REAL_MYSQL_ADDRESS;
    // Gerçek mysql sunucusuna asenkron bir bağlantı kur
    $connection_to_mysql = new AsyncTcpConnection($REAL_MYSQL_ADDRESS);
    // Mysql bağlantısından veri geldiğinde, ilgili istemci bağlantısına yönlendir
    $connection_to_mysql->onMessage = function(AsyncTcpConnection $connection_to_mysql, $buffer)use($connection)
    {
        $connection->send($buffer);
    };
    // Mysql bağlantısı kapandığında, ilgili proxy olan istemci bağlantısını kapat
    $connection_to_mysql->onClose = function(AsyncTcpConnection $connection_to_mysql)use($connection)
    {
        $connection->close();
    };
    // Mysql bağlantısında hata oluştuğunda, ilgili proxy olan istemci bağlantısını kapat
    $connection_to_mysql->onError = function(AsyncTcpConnection $connection_to_mysql)use($connection)
    {
        $connection->close();
    };
    // Asenkron bağlantıyı gerçekleştir
    $connection_to_mysql->connect();

    // İstemciden veri geldiğinde, ilgili mysql bağlantısına yönlendir
    $connection->onMessage = function(TcpConnection $connection, $buffer)use($connection_to_mysql)
    {
        $connection_to_mysql->send($buffer);
    };
    // İstemci bağlantısı kapandığında, ilgili mysql bağlantısını kapat
    $connection->onClose = function(TcpConnection $connection)use($connection_to_mysql)
    {
        $connection_to_mysql->close();
    };
    // İstemci bağlantısında hata oluştuğunda, ilgili mysql bağlantısını kapat
    $connection->onError = function(TcpConnection $connection)use($connection_to_mysql)
    {
        $connection_to_mysql->close();
    };

};
// Worker'ı çalıştır
Worker::runAll();

Test

mysql -uroot -P4406 -h127.0.0.1 -p

MySQL monitörüne hoş geldiniz. Komutlar ; veya \g ile sona erer.
MySQL bağlantı kimliğiniz 25004
Sunucu versiyonu: 5.5.31-1~dotdeb.0 (Debian)

Telif hakkı (c) 2000, 2013, Oracle ve/veya yan kuruluşları. Tüm hakları saklıdır.

Oracle, Oracle Corporation ve/veya yan kuruluşlarının tescilli markasıdır. Diğer isimler, ilgili sahiplerinin ticari markası olabilir.

Yardım için 'help;' veya '\h' yazın. Geçerli girdi ifadesini temizlemek için '\c' yazın.

mysql>