PHP socket_set_timeout()
Hàm `socket_set_timeout()` trong PHP
Hàm `socket_set_timeout()` trong PHP được sử dụng để thiết lập thời gian timeout cho một socket. Điều này có nghĩa là khi một socket không nhận được phản hồi trong khoảng thời gian đã chỉ định, quá trình nhập hoặc xuất dữ liệu sẽ bị dừng lại và trả về lỗi.
Cú pháp
socket_set_timeout(resource $socket, int $seconds, int $microseconds = 0): bool
Tham số
- $socket: Tài nguyên socket mà bạn muốn thiết lập thời gian timeout.
- $seconds: Số giây tối đa mà socket sẽ chờ trước khi timeout.
- $microseconds: (Tùy chọn) Số micro giây bổ sung, cho phép bạn tinh chỉnh thời gian timeout. Mặc định là 0.
Giá trị trả về
Hàm trả về true nếu thiết lập thành công và false nếu không thành công.
Ví dụ sử dụng
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP); socket_set_option($socket, SOL_SOCKET, SO_REUSEADDR, 1); socket_connect($socket, '127.0.0.1', 8080); // Thiết lập timeout cho socket $timeout = ['sec' => 5, 'usec' => 0]; socket_set_option($socket, SOL_SOCKET, SO_RCVTIMEO, $timeout); // Thử gửi và nhận dữ liệu if (socket_send($socket, $data, strlen($data), 0) === false) { echo "Không thể gửi dữ liệu: " . socket_strerror(socket_last_error($socket)); }
Lưu ý
Các giá trị timeout được thiết lập này sẽ áp dụng cho tất cả các thao tác đọc và ghi trên socket đó. Nếu bạn muốn thiết lập timeout khác nhau cho đọc và ghi, bạn có thể sử dụng các tùy chọn khác như SO_SNDTIMEO
cho timeout gửi.
Kết luận
Hàm `socket_set_timeout()` là một công cụ hữu ích để kiểm soát thời gian chờ cho socket trong PHP, giúp bạn quản lý các tình huống như mất kết nối hoặc phản hồi chậm từ máy chủ.