connect วิธีการ
void AsyncTcpConnection::connect()
ดำเนินการเชื่อมต่อแบบอะซิงโครนัส วิธีการนี้จะส่งคืนทันที
หมายเหตุ: หากต้องการตั้งค่าการเรียกกลับ onError ของการเชื่อมต่อแบบอะซิงโครนัส ควรตั้งค่าก่อนที่ connect จะดำเนินการ มิฉะนั้น การเรียกกลับ onError อาจไม่ถูกเรียกใช้งาน เช่น ตัวอย่างด้านล่าง การเรียกกลับ onError อาจไม่ถูกเรียกใช้งาน ไม่สามารถจับเหตุการณ์การเชื่อมต่อแบบอะซิงโครนัสล้มเหลวได้
$connection = new AsyncTcpConnection('tcp://baidu.com:81');
// ขณะดำเนินการเชื่อมต่อ ยังไม่ได้ตั้งค่าการเรียกกลับ onError
$connection->connect();
$connection->onError = function($connection, $err_code, $err_msg)
{
echo "$err_code, $err_msg";
};
พารามิเตอร์
ไม่มีพารามิเตอร์
ค่าที่ส่งคืน
ไม่มีค่าที่ส่งคืน
ตัวอย่าง ตัวตัวแทน Mysql
use Workerman\Worker;
use Workerman\Connection\AsyncTcpConnection;
use Workerman\Connection\TcpConnection;
require_once __DIR__ . '/vendor/autoload.php';
// ที่อยู่ mysql จริง สมมติว่าที่นี่คือพอร์ต 3306 ของเครื่อง
$REAL_MYSQL_ADDRESS = 'tcp://127.0.0.1:3306';
// ตัวแทนฟังที่พอร์ต 4406 ของเครื่อง
$proxy = new Worker('tcp://0.0.0.0:4406');
$proxy->onConnect = function(TcpConnection $connection)
{
global $REAL_MYSQL_ADDRESS;
// สร้างการเชื่อมต่อแบบอะซิงโครนัสไปยังเซิร์ฟเวอร์ mysql จริง
$connection_to_mysql = new AsyncTcpConnection($REAL_MYSQL_ADDRESS);
// เมื่อการเชื่อมต่อ mysql ส่งข้อมูลมา ก็จะส่งต่อไปยังการเชื่อมต่อที่เหมาะสมของไคลเอนต์
$connection_to_mysql->onMessage = function(AsyncTcpConnection $connection_to_mysql, $buffer)use($connection)
{
$connection->send($buffer);
};
// เมื่อการเชื่อมต่อ mysql ปิด จะปิดการเชื่อมต่อที่เหมาะสมไปยังไคลเอนต์
$connection_to_mysql->onClose = function(AsyncTcpConnection $connection_to_mysql)use($connection)
{
$connection->close();
};
// เมื่อเกิดข้อผิดพลาดในการเชื่อมต่อ mysql จะปิดการเชื่อมต่อที่เหมาะสมไปยังไคลเอนต์
$connection_to_mysql->onError = function(AsyncTcpConnection $connection_to_mysql)use($connection)
{
$connection->close();
};
// ดำเนินการเชื่อมต่อแบบอะซิงโครนัส
$connection_to_mysql->connect();
// เมื่อไคลเอนต์ส่งข้อมูลมา ส่งต่อไปยังการเชื่อมต่อ mysql ที่เหมาะสม
$connection->onMessage = function(TcpConnection $connection, $buffer)use($connection_to_mysql)
{
$connection_to_mysql->send($buffer);
};
// เมื่อการเชื่อมต่อของไคลเอนต์ขาด จะปิดการเชื่อมต่อ mysql ที่เหมาะสม
$connection->onClose = function(TcpConnection $connection)use($connection_to_mysql)
{
$connection_to_mysql->close();
};
// เมื่อเกิดข้อผิดพลาดในการเชื่อมต่อของไคลเอนต์ จะปิดการเชื่อมต่อ mysql ที่เหมาะสม
$connection->onError = function(TcpConnection $connection)use($connection_to_mysql)
{
$connection_to_mysql->close();
};
};
// เรียกใช้งาน worker
Worker::runAll();
ทดสอบ
mysql -uroot -P4406 -h127.0.0.1 -p
ยินดีต้อนรับสู่ MySQL monitor. คำสั่งจะจบลงด้วย ; หรือ \g.
รหัสการเชื่อมต่อ MySQL ของคุณคือ 25004
เวอร์ชันเซิร์ฟเวอร์: 5.5.31-1~dotdeb.0 (Debian)
ลิขสิทธิ์ (c) 2000, 2013, Oracle และ/หรือบริษัทในเครือ. สงวนลิขสิทธิ์.
Oracle เป็นเครื่องหมายการค้าจดทะเบียนของบริษัท Oracle และ/หรือบริษัทในเครือ. ชื่ออื่นอาจเป็นเครื่องหมายการค้าของเจ้าของที่เกี่ยวข้อง.
พิมพ์ 'help;' หรือ '\h' สำหรับความช่วยเหลือ. พิมพ์ '\c' เพื่อล้างคำสั่งนำเข้าปัจจุบัน.
mysql>