2012-06-06 63 views
0

我正在開發一個應用程序,它將使用服務器來同步數據,該服務器將使用php和mysql數據庫。PHP + MySQL +會話事務

要同步過程我想是3路通信:

1 - 客戶端將數據發送到服務器,服務器處理數據,在確定或錯誤,在回覆給客戶端這一點服務器應該開始交易。 2 - 客戶端如果收到確定只更新內部信息(更新日期並從數據庫中刪除一些行) 3 - 客戶端向服務器發送另一個請求(確定或取消),當服務器收到它提交的新請求時或回滾事務。

這可能嗎?在一個請求中啓動事務,並在另一個請求中提交事務? 如果是,如何?會議?

或者我應該以另一種方式做到這一點?

+0

可能的重複:http://stackoverflow.com/questions/329622/how-can-i-implement-commit-rollback-for-mysql-in-php –

回答

0

在PHP中,你不應該在會話中存儲對象(需要引用)。所以我會做的是將數據存儲到會話中,並且當您從客戶端收到確認時,檢索數據並組裝查詢(mysqli或PDO,您喜歡的那個)。

這將工作,除非你需要使用數據庫中的一些數據(IE last_inser_id)如果這種情況下我不知道如何做到這一點,並試圖說這是不可能的(不要記住,但我認爲PHP關閉腳本結束時的DB會話)

+0

需要引用嗎? LOL :-) –

+0

在需要來自先前數據庫請求的附加數據(如插入ID)的情況下,在PDO或MySQLi的情況下;你可以執行'$ pdoObject-> lastInsertId();'或'$ mysqliObject-> insert_id' –

+0

有兩個不同的請求,'lastInsertId'或'insert_id'不會返回在另一個會話上插入的id。你可以使用persitent連接提供你禁用自動清理,但我wouldnt推薦。(http://php.net/manual/en/mysqli.persistconns.php) – Jarry