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>