2012-06-06 36 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