onBufferDrain
Giới thiệu:
callback Worker::$onBufferDrain
Mỗi kết nối đều có một bộ đệm gửi ứng dụng riêng biệt, kích thước bộ đệm được xác định bởi TcpConnection::$maxSendBufferSize, giá trị mặc định là 1MB, có thể được thiết lập để thay đổi kích thước, và sự thay đổi này sẽ có hiệu lực trên tất cả các kết nối.
Callback này được kích hoạt khi tất cả dữ liệu trong bộ đệm gửi của ứng dụng đã được gửi xong. Thường được kết hợp với onBufferFull, ví dụ như khi onBufferFull thì ngừng gửi dữ liệu tới đối tác, và khi onBufferDrain thì khôi phục lại việc ghi dữ liệu.
Tham số của hàm callback
$connection
Đối tượng kết nối, tức là một instance của TcpConnection, được sử dụng để thao tác với kết nối của khách hàng, chẳng hạn như gửi dữ liệu, đóng kết nối v.v.
Ví dụ
use Workerman\Worker;
use Workerman\Connection\TcpConnection;
require_once __DIR__ . '/vendor/autoload.php';
$worker = new Worker('websocket://0.0.0.0:8484');
$worker->onBufferFull = function(TcpConnection $connection)
{
echo "bufferFull and do not send again\n";
};
$worker->onBufferDrain = function(TcpConnection $connection)
{
echo "buffer drain and continue send\n";
};
// Chạy worker
Worker::runAll();
Lưu ý: Ngoài việc sử dụng hàm ẩn danh làm callback, bạn cũng có thể tham khảo tại đây để sử dụng các cách viết callback khác.
Tham khảo
onBufferFull được kích hoạt khi bộ đệm gửi của ứng dụng kết nối đầy.