onBufferDrain
คำอธิบาย:
callback Worker::$onBufferDrain
แต่ละการเชื่อมต่อมีบัฟเฟอร์การส่งที่แยกต่างหากที่ระดับแอปพลิเคชัน ขนาดของบัฟเฟอร์ถูกกำหนดโดยTcpConnection::$maxSendBufferSize ค่าเริ่มต้นคือ 1MB และสามารถตั้งค่าแก้ไขขนาดได้ การเปลี่ยนแปลงจะมีผลต่อการเชื่อมต่อทั้งหมด
การเรียกกลับนี้จะถูกกระตุ้นเมื่อข้อมูลในบัฟเฟอร์การส่งของแอปพลิเคชันถูกส่งออกทั้งหมดแล้ว โดยทั่วไปจะใช้ร่วมกับ onBufferFull เช่น ในกรณีที่ onBufferFull จะหยุดการส่งข้อมูลไปยังฝั่งตรงข้าม และในกรณีที่ onBufferDrain จะกลับมาทำการเขียนข้อมูลต่อ
พารามิเตอร์ของฟังก์ชันเรียกกลับ
$connection
วัตถุการเชื่อมต่อ ซึ่งก็คือ อินสแตนซ์ของ TcpConnection ที่ใช้ในการจัดการการเชื่อมต่อของลูกค้า เช่น การส่งข้อมูล, การปิดการเชื่อมต่อ เป็นต้น
ตัวอย่าง
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";
};
// เรียกใช้งาน worker
Worker::runAll();
คำแนะนำ: นอกจากการใช้ฟังก์ชันนิรนามเป็นการเรียกกลับแล้ว ยังสามารถ ดูรายละเอียดที่นี่ เพื่อใช้รูปแบบการเรียกกลับอื่นๆ
ดูเพิ่มเติม
onBufferFull จะถูกเรียกเมื่อบัฟเฟอร์การส่งที่ระดับแอปพลิเคชันเต็มแล้ว