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>