2012-07-09 22 views
11

Tôi đã thấy nó được đề cập ở những nơi khác nhau trên internet rằng các websockets HTML5 không hoạt động tốt với PHP, rằng PHP bởi bản chất của nó chỉ thích hợp để sử dụng với chúng. Mặt khác, tôi thấy nhiều hướng dẫn về cách sử dụng PHP với websockets và Ive nhận thấy một số thực thi websocket PHP chẳng hạn như http://code.google.com/p/phpwebsocket/Ổ cắm web có phù hợp để sử dụng với PHP không?

Vì vậy, không ai có bất kỳ thông tin dứt khoát nào về việc sử dụng ổ cắm web bằng PHP. Chúng có thể sử dụng được với PHP, những lợi thế/bất lợi của việc sử dụng chúng với PHP như trái ngược với Java hay Python, và tại sao tôi đọc nhiều người nói rằng chúng không hoạt động tốt với nhau?

+2

Bạn có thể quan tâm đến việc đọc về NodeJS và socket.io. Nó phụ thuộc vào dự án của bạn nhưng nó có thể cung cấp cho bạn những gì bạn cần: [nodejs.org] (http://nodejs.org) [socket.io] (http://socket.io) – imperium2335

Trả lời

7

Vấn đề là WebSockets được thiết kế cho các luồng/quy trình chạy dài mà mỗi duy trì nhiều kết nối theo hướng sự kiện, trong khi PHP (và nhóm thuần tập Apache) được thiết kế xung quanh mô hình quy trình thủ tục đơn lẻ (ví dụ: max_execution_time is commonly set to 30 seconds, và phiên là chuỗi đơn).

Điều đó không có nghĩa là không thể viết thực thi máy chủ WebSockets trong PHP. Tôi biết ít nhất một dự án tồn tại có done exactly this (nhưng lưu ý, ngay cả ví dụ này được chạy từ dòng lệnh, không thông qua mod_php). Nhưng có khả năng là việc thực thi PHP của WebSockets không tương thích với việc thiết lập hosting giá rẻ/chia sẻ nơi PHP được sử dụng phổ biến nhất. Vì vậy, trong khi nó có thể trong PHP, bạn sẽ phải chạy một quá trình máy chủ riêng biệt (từ Apache), và nếu bạn đang ở trên lưu trữ cho phép các quá trình máy chủ riêng biệt thì việc viết WebSockets dễ dàng hơn mã trong một cái gì đó được thiết kế cho lập trình hướng sự kiện.

Nếu bạn không có kế hoạch phân phát hàng chục nghìn kết nối song công đồng thời thì có thể bạn nên sử dụng kết hợp AJAX và SSE với phần mềm PHP back-end của mình.

+0

Điều gì về php-fpm? Và php7 với công nghệ JIT? Câu trả lời này nên được cập nhật. – LeonanCarvalho

0

Gần đây tôi đã thử phpwebsocket và nó không hoạt động tại thời điểm này (php 5.4 và chrome) mã đề cập đến một khóa thứ hai trong cái bắt tay không tồn tại trong rev. 13 của giao thức websocket Tôi không có thời gian để đọc RFC để hiểu vấn đề là gì. Nó chắc chắn rằng giải pháp này là thanh lịch hơn và phản ứng hơn AJAX với bỏ phiếu dài nhưng websockets không ổn định tại thời điểm này tôi nghĩ rằng nó sẽ là thú vị hơn để chờ đợi rằng w3c thông báo nó ổn định.

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