首頁 >後端開發 >php教程 >關於微信公眾號接收資料並傳送給區域網路網站的一些問題

關於微信公眾號接收資料並傳送給區域網路網站的一些問題

WBOY
WBOY原創
2016-08-18 09:16:011288瀏覽

只是想找一下思路,聽聽大神的意見,不求他人幫忙做出詳細方案,只求指出攻關方向。本人會PHP/Java,能對照百度寫一點Python。
在本地區域網路中,有台伺服器跑php網站,這台伺服器處於深深的內網中(動態公網IP+網管不給做埠轉送);另有一台伺服器,處於xx雲的機房中,有獨立公網IP,跑php用於與微信對接。現在想做一個功能,能讓微信傳送的訊息途徑xx雲主機轉送至區域網路伺服器上。 xx雲端主機是Linux係作業系統,可考慮PHP/Python/Java的運行;區域網路主機是台普通PC,windows作業系統,可執行PHP/Python/Java,兩台主機均配備了MySQL資料庫(也是本問題選用的資料庫).不知諸君有沒有什麼比較精妙的思路。 。
現在我初步有幾個思路,還求各位評點,謝謝!
1.微信->雲端主機(PHP)->資料庫
   區域網路使用Python或Java輪詢取得新增資料到本機資料庫。
2.微信->雲主機(PHP)->跨進程傳送至Python寫的Socket伺服器
   區域網路使用Python或Java與雲端主機建立Socket鏈接,即時通訊存入資料庫。
3.微信->雲端主機(PHP)->資料庫.
    本地資料庫與遠端資料庫建立主從資料庫同步(關鍵是遠端可以只寫不查)
4.微信->雲端主機(PHP)->資料庫
    本地編寫程式直接連接兩個資料庫做一些操作。 。
以上便是我針對這個問題思考的一些結果,感覺每個方法都會影響整體系統的速度與效率。

回覆內容:

只是想找一下思路,聽聽大神的意見,不求他人幫忙做出詳細方案,只求指出攻關方向。本人會PHP/Java,能對照百度寫一點Python。
在本地區域網路中,有台伺服器跑php網站,這台伺服器處於深深的內網中(動態公網IP+網管不給做埠轉送);另有一台伺服器,處於xx雲的機房中,有獨立公網IP,跑php用於與微信對接。現在想做一個功能,能讓微信傳送的訊息途徑xx雲主機轉送至區域網路伺服器上。 xx雲端主機是Linux係作業系統,可考慮PHP/Python/Java的運行;區域網路主機是台普通PC,windows作業系統,可執行PHP/Python/Java,兩台主機均配備了MySQL資料庫(也是本問題選用的資料庫).不知諸君有沒有什麼比較精妙的思路。 。
現在我初步有幾個思路,還求各位評點,謝謝!
1.微信->雲端主機(PHP)->資料庫
   區域網路使用Python或Java輪詢取得新增資料到本機資料庫。
2.微信->雲主機(PHP)->跨進程傳送至Python寫的Socket伺服器
   區域網路使用Python或Java與雲端主機建立Socket鏈接,即時通訊存入資料庫。
3.微信->雲端主機(PHP)->資料庫.
    本地資料庫與遠端資料庫建立主從資料庫同步(關鍵是遠端可以只寫不查)
4.微信->雲端主機(PHP)->資料庫
    本地編寫程式直接連接兩個資料庫做一些操作。 。
以上便是我針對這個問題思考的一些結果,感覺每個方法都會影響整體系統的速度與效率。

可以使用redis的訂閱/發布功能,訊息能夠即時傳遞

我來給你第二種思路增增粗

微信->雲端主機(PHP)->起一個rabbitMQ的訊息佇列server, 把微信訊息丟進佇列->區域網路主機起一個rabbitMQ的client, 從server端取出訊息->丟進資料庫

整個訊息傳輸過程非同步進行, 哪一個環節都不會有阻塞, 妥妥的, 不用再造輪子了

方案很多,就像你自己給的1、2、3、4一樣,這個時候就要看業務場景:

  1. 時間緊嗎?

  2. 資料量大嗎?

  3. 時延要求高嗎?

  4. 並發量如何?

  5. 軟硬體投入有限制嗎?

不能用花生殼嗎

這4個方案在理論上都是可行的。但實際場景中記得要注意這幾點:
1、你的所有方案都是寫操作,如果有讀操作的話,部分方案就很難辦了,靠異步輪詢的話肯定會有數據不一致
2、保持長連接進行通訊的話,如果短時間內沒有數據,防火牆會不會把你的連結咔嚓掉。這是一個非常棘手且非常常見的大問題,尤其是網管不給做端口轉發這種糟糕的前提下。
3、對於方案4,你的網路延遲會不會對使用者操作造成僵死或髒數據。

天朝網路品質很差的,盡量避免多個遠端伺服器處理一個線性操作,也盡量避免遠端長連線。

一般區域網路內做微信伺服器,都是透過連接埠轉送(如果是動態ip的話還要配動態網域)。現在你的php伺服器本質上不處理業務,只做代理,那我有兩個方案,1是在公網伺服器上搭建nginx,透過動態網域技術反向代理到你的區域網路伺服器上2,使用服務中間價,例如java的dubbo,在外網伺服器遠端呼叫區域網路內的服務

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
上一篇:介面規格問題下一篇:介面規格問題