Phương thức connect

void AsyncTcpConnection::connect()

Thực hiện kết nối bất đồng bộ. Phương thức này sẽ trả về ngay lập tức.

Lưu ý: Nếu cần thiết lập onError callback cho kết nối bất đồng bộ, thì cần thiết lập trước khi thực hiện connect, nếu không onError callback có thể không được kích hoạt. Ví dụ dưới đây onError callback có thể không được kích hoạt, không thể bắt sự kiện lỗi kết nối bất đồng bộ.

$connection = new AsyncTcpConnection('tcp://baidu.com:81');
// Chưa thiết lập onError callback khi thực hiện kết nối
$connection->connect();
$connection->onError = function($connection, $err_code, $err_msg)
{
    echo "$err_code, $err_msg";
};

Tham số

Không có tham số

Giá trị trả về

Không có giá trị trả về

Ví dụ về Proxy MySQL

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

// Địa chỉ MySQL thực, giả sử ở đây là cổng 3306 trên máy cục bộ
$REAL_MYSQL_ADDRESS = 'tcp://127.0.0.1:3306';

// Proxy lắng nghe cổng 4406 trên máy localhost
$proxy = new Worker('tcp://0.0.0.0:4406');

$proxy->onConnect = function(TcpConnection $connection)
{
    global $REAL_MYSQL_ADDRESS;
    // Thiết lập kết nối bất đồng bộ đến máy chủ MySQL thực tế
    $connection_to_mysql = new AsyncTcpConnection($REAL_MYSQL_ADDRESS);
    // Khi kết nối MySQL gửi dữ liệu, chuyển tiếp đến kết nối khách hàng tương ứng
    $connection_to_mysql->onMessage = function(AsyncTcpConnection $connection_to_mysql, $buffer)use($connection)
    {
        $connection->send($buffer);
    };
    // Khi kết nối MySQL đóng, đóng kết nối proxy tương ứng đến khách hàng
    $connection_to_mysql->onClose = function(AsyncTcpConnection $connection_to_mysql)use($connection)
    {
        $connection->close();
    };
    // Khi kết nối MySQL gặp lỗi, đóng kết nối proxy tương ứng đến khách hàng
    $connection_to_mysql->onError = function(AsyncTcpConnection $connection_to_mysql)use($connection)
    {
        $connection->close();
    };
    // Thực hiện kết nối bất đồng bộ
    $connection_to_mysql->connect();

    // Khi khách hàng gửi dữ liệu, chuyển tiếp đến kết nối MySQL tương ứng
    $connection->onMessage = function(TcpConnection $connection, $buffer)use($connection_to_mysql)
    {
        $connection_to_mysql->send($buffer);
    };
    // Khi kết nối khách hàng đóng, đóng kết nối MySQL tương ứng
    $connection->onClose = function(TcpConnection $connection)use($connection_to_mysql)
    {
        $connection_to_mysql->close();
    };
    // Khi kết nối khách hàng gặp lỗi, đóng kết nối MySQL tương ứng
    $connection->onError = function(TcpConnection $connection)use($connection_to_mysql)
    {
        $connection_to_mysql->close();
    };

};
// Chạy worker
Worker::runAll();

Kiểm tra

mysql -uroot -P4406 -h127.0.0.1 -p