PHP 和 node.js 共存的問題?

想做個網站,用php,但是想把需要實時處理的全部交給nodejs來處理,有幾個問題:

  1. 如何認證用戶,假如在php中用session來驗證,node怎麼驗證這個用戶呢?分散式session好么?

  2. 資料庫的問題,比如用戶A給用戶B發了一條信息,用戶B可以實時的收到這個消息(ajax發送一條消息-&>node接到這個請求,插入一條數據成功後,發一個socket給瀏覽器,瀏覽器用websocket)這樣做好不好?


0. 如果你僅僅是為了在php里使用Socket.IO: the cross-browser WebSocket for realtime apps.的話,

Using PHP with http://Socket.io

Elephant.io: a library for php realtime apps using socket.io.

1. php和nodejs通過mongodb或redis來共享session就ok了吧,不需要什麼分散式

2. ajax發消息?為啥客戶端不直接socket.io收發?支持多種transports: websocket, htmlfile, xhr-polling, jsonp-polling,flashsocket Configuring Socket.IO · LearnBoost/socket.io Wiki · GitHub


PHP也有類似Node.js的利器,你是一個PHP程序員何必用Node.js呢?

Swoole: PHP的非同步並行Server/Client擴展


就你的這個問題而言:

問題1 建議使用redis做消息隊列,php只負責對list進行push,node只負責pop,session可以存在redis或者memcached裡面,這樣橫向擴展也很方便;

問題2 分情況討論

1 如果你能保證你的用戶的瀏覽器都是現代瀏覽器支持websocket自然好;但是如果有兼容ie7/8/9的需求,則不能用,此時

2 如果你能保證你的客戶端瀏覽器都支持flash,則可以使用flash的socket進行通信,但是如果有支持移動端瀏覽器的需求,則不能用,此時

3 老老實實學知乎、新浪微博,輪詢吧


未來網站的我感覺將是php和node.js兩者互補統治,在http時代,node.js比php強在非同步非阻塞更適合app api 介面開發 ,開發快方便強大。php比Node.js強在網站開發方面,開發速度快,社區更強大。一個大型網站往往不僅需要網站的快速開發(php可快速開發)還需要強大的app api(node.js更擅長web api介面開發)介面。 兩者都要兼顧。所以說在http方面是php和node.js的強項,都很輕量級。 反觀python和java和go都很重量級,web只是其一個方向,它們也許更擅長server app


推薦閱讀:

英文不好可以看關於JS的英文原版書嗎?
用HTML5 canvas做數學公式手寫識別需要多大的工作量?
網站的後台技術人員是如何反制搶票軟體的?
Chrome 對 JS 的支持似乎不是很好,為什麼有些 JS 腳本執行不了?要怎麼解決這個問題?
怎麼理解元編程?

TAG:JavaScript | PHP | Nodejs | 服務端開發 |