2012-05-14 56 views
8

Tôi bắt buộc phải duy trì một số ổ cắm mà tôi đã mở bằng PHP và kiểm tra các ổ cắm đó theo các khoảng thời gian đều đặn. Tôi mới vào ổ cắm trong PHP; Tôi đã mở các ổ cắm như thế này:Làm thế nào để biết liệu socket có mở trong PHP không?

$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP); 
socket_connect($socket, $ip, $port); 

Một số ổ cắm có thể rơi vào trạng thái không trả lại tin nhắn; các ổ cắm này chỉ nhận tin nhắn. Làm cách nào để biết ổ cắm có được mở nếu ổ cắm không phản hồi một tin nhắn?

+0

Bạn nên phân biệt các ổ cắm được "mở", ví dụ: Hệ điều hành phân bổ tài nguyên cho các bộ mô tả đó và các ổ cắm được "kết nối" với các ổ cắm khác (ví dụ: ổ cắm máy chủ trên máy chủ từ xa). Trong trường hợp này, câu hỏi nên nói về "... nếu một socket CONNECTION được mở ..." theo ý kiến ​​của tôi. – excanoe

Trả lời

2

socket_sendto - Gửi tin nhắn đến một ổ cắm, cho dù nó được kết nối hay không

Có vẻ như bạn có thể sử dụng socket_sendto và gửi một số 'ping' dữ liệu đến các máy chủ từ xa, sau đó kiểm tra sự trở lại giá trị để xác định xem socket có được thiết lập hay không.

+0

Bạn có thể tìm ra nó? –

+0

Điều gì về một nỗ lực không chặn để đọc từ ổ cắm? Điều đó sẽ trả về giá trị trống hoặc sai tùy thuộc vào kết nối hay không. Cũng sẽ tạo ra một cảnh báo tôi nghĩ nhưng điều đó có thể bị vô hiệu hóa. – transilvlad

Các vấn đề liên quan