Như tôi đã hiểu, bạn có thể tạo một mạng nonblockingsocket bằng PHP 5.x.Ổ cắm không chặn: Các thư có được xếp hàng đợi không?
Nhưng điều gì sẽ xảy ra nếu một kịch bản gửi nhiều tin nhắn dài bằng cách sử dụng ổ cắm nonblocking tương tự như sau:
socket_write($socket, $string1, $length);
socket_write($socket, $string2, $length);
socket_write($socket, $string3, $length);
socket_write($socket, $string4, $length);
Là những thông điệp trong hàng đợi (? Trên người gửi/bên nhận) hoặc là nó có thể rằng người nhận được các phần của các thông điệp khác nhau vì chúng đã gửi "song song"?
Ví dụ: Là Có thể là người nhận được 10 byte $ string1, sau đó 30 byte $ string2, sau đó thêm 25 byte $ chuỗi1 ... và vân vân ....
+1 Cũng xem http://stackoverflow.com/questions/1432477/can-php-asynchronously-use-sockets – msanford
Điều đó có nghĩa là ví dụ của tôi ở trên: Ổ cắm TCP sẽ đảm bảo rằng người nhận sẽ không bao giờ thấy dữ liệu từ $ string2 , 3 hoặc 4 cho đến khi $ string1 được nhận hoàn toàn? – Mike
Có, nhưng lưu ý rằng tất cả dữ liệu được ghi ra cùng một ổ cắm, do đó, người nhận sẽ thấy dữ liệu dưới dạng một luồng thông tin. Trừ khi bạn thêm chuỗi dài, dấu phân cách hoặc một số thông tin khác vào dữ liệu của bạn, người nhận sẽ không biết vị trí '$ string1' kết thúc và' $ string2' bắt đầu. –