2015-10-29 50 views
0

我正在實現兩個設備之間的同步過程。網絡和移動。我已經計劃了一種算法,但不確定其實施的可能性。我的算法是,單個PHP線程來響應兩個異步ajax請求

  1. Mobile將生成一個ajax請求到PHP腳本以將其數據同步到數據庫。
  2. PHP腳本啓動一個事務,然後將數據插入到移動設備發送的數據庫中,並收集必須發送給移動設備的數據併發送處理但不提交。
  3. 手機接收到響應,啓動一個事務,併發送另一個Ajax請求作爲確認到php腳本並在移動端提交。
  4. PHP腳本接收確認Ajax請求,並承諾其數據,以及我在SETP開發2.

我的問題是,是否有可能使用單一的PHP線與兩個同步ajax請求工作?

+2

我認爲這不是線程。這是關於單獨的HTTP請求。 HTTP是無狀態的。你需要自己管理兩個請求之間的狀態。例如,你可以使用普通的PHP會話。 –

回答

2

我將把php的概念留給專家。

我們有一個類似的場景,我們將數據發送到服務器並將其插入一個標記值(例如,不完整),然後我們會迴應設備說xyz行被插入。它還將包含每個設備的唯一標識符,以便我們可以跟蹤哪個設備發送了哪些數據,我們還將在單獨的表(transaction_status)中維護每個設備的唯一標識符,唯一事務標識(uuid)和時間戳的詳細信息。確認將在客戶端更新,這將基本上從客戶端上維護的同步隊列中移除事務。

當來自同一客戶端的下一組記錄到達服務器時,服務器將查詢transaction_status表中的匹配條目。如果條目已經可用,則意味着確認沒有到達客戶端,服務器將在這種情況下響應必要的數據。

如果下一組記錄不包含在上次同步期間發送的條目,則那些被視爲成功同步和不完整標誌的條目將被更新。

我明白這可能是模糊的,但我會嘗試在我的空閒時間創建一個圖來清晰地描述此場景。

如果您需要更多說明,請留下評論。

任何人都有更好的方法,請隨時分享。

0

我終於結束了使用websockets。爲了實現PHP中的websocket,我使用了Ratchet。我能夠得到我想要實現的。