Với nút lệnh, rất dễ dàng để tạo một máy chủ TCP không chặn. Ví dụ từ nodejs.org:Làm cách nào để triển khai ứng dụng máy chủ socket không đồng bộ hiệu suất cao trong PHP?
var net = require('net');
var server = net.createServer(function (socket) {
socket.write("Echo server\r\n");
socket.pipe(socket);
});
server.listen(1337, "127.0.0.1")
nodejs xử lý các lựa chọn() -/bình chọn() -/epoll() thứ cho bạn, những thói quen ổ cắm và các vòng lặp chính được thực hiện trong C, do đó, nó rất nhanh và hiệu quả.
nodejs là rất tốt, nhưng tôi muốn thực hiện một máy chủ socket TCP hiệu suất cao trong PHP, bởi vì tôi là một chàng trai PHP :)
Vì vậy, có một điều tôi đã cố gắng là để thực hiện các thói quen ổ cắm bằng PHP, với socket_create_listen
, socket_accept
, socket_select
v.v ... và vòng lặp chính trong PHP. Điều này hoạt động rất tốt, nhưng tôi không nghĩ rằng nó rất hiệu quả, vì tôi phải sử dụng socket_select
gọi hàm C select
trong nội bộ, nhưng epoll
sẽ tốt hơn tôi nghĩ (tôi đang sử dụng Linux), nhưng không có sẵn epoll
như hàm PHP. (phpsocketdaemon và phpmio là 2 dự án mà tôi thấy rằng triển khai các trình cắm thông thường cho bạn).
Có thể thực hiện điều đó theo cách nodej không? Tôi đang suy nghĩ về một mô-đun PHP mà thực hiện các vòng lặp và thói quen socket trong C, và gọi PHP chức năng gọi lại cho các sự kiện (onread
, onerror
..). Hay nó không đáng để nỗ lực?
/máy chủ socket TCP hiệu năng cao trong PHP/trông giống như một oxymoron nếu tôi từng thấy. –
Giống như một fan hâm mộ PHP như tôi, nó thực sự không được thiết kế cho loại sử dụng này. Bạn có thể có thể thực hiện một máy chủ trong nó, nhưng tôi muốn nói làm một cách hiệu quả sẽ là một kỳ công thực sự. Trừ khi PHP trải qua một số thay đổi kiến trúc lớn cho phép sử dụng loại này, tôi khuyên bạn nên sử dụng một cái gì đó phù hợp hơn với nhiệm vụ. – GordonM