Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php symfony数据库锁与会话_Php_Symfony_Session_Doctrine_Locking - Fatal编程技术网

Php symfony数据库锁与会话

Php symfony数据库锁与会话,php,symfony,session,doctrine,locking,Php,Symfony,Session,Doctrine,Locking,我尝试为多个用户创建一个基于php的系统。我使用Symfony2作为一个框架。数据存储在MySQL数据库中 为了允许不同的用户同时使用系统,我想锁定数据库条目。据我所知,该学说支持乐观锁定和悲观锁定。我的想法是,当用户打开一个站点编辑该条目时,锁定一个条目(分别为整个对象或行)。它应该保持锁定,直到他完成编辑或中止它。。。所以直到他去另一个地方 为了避免死锁,我考虑加入一个计时器,在一段时间不活动后释放antry(加上一条弹出消息,询问用户是否仍在工作) 我想这可以通过会话管理来实现。但老实说,

我尝试为多个用户创建一个基于php的系统。我使用Symfony2作为一个框架。数据存储在MySQL数据库中

为了允许不同的用户同时使用系统,我想锁定数据库条目。据我所知,该学说支持乐观锁定和悲观锁定。我的想法是,当用户打开一个站点编辑该条目时,锁定一个条目(分别为整个对象或行)。它应该保持锁定,直到他完成编辑或中止它。。。所以直到他去另一个地方

为了避免死锁,我考虑加入一个计时器,在一段时间不活动后释放antry(加上一条弹出消息,询问用户是否仍在工作)

我想这可以通过会话管理来实现。但老实说,我不知道怎么做。我希望你能给我一些意见

致意
SpiGAndromeda

我不认为我会走这条路,这听起来很痛苦,而且可能会引起问题。为什么不在编辑记录时使用外部共享数据密钥存储(如memcache)或其他东西来锁定某个密钥/用户的记录id?如果有人试图在另一个用户正在编辑时访问该文档,您可以显示该文档已锁定。这样就不会造成数据库死锁。您可以使用某种ajax或类似的方法刷新锁(如果用户使用AFK等,则为其提供一个合理的超时时间)。只是想一个替代方法。好的。我希望我能理解正确的方式。。。我应该使用memchache来存储被编辑的条目的id(有一定的过期时间)。每次有人打开一个编辑页面,我都会检查这个条目的键是否存在于memchache中?是的,类似的。当用户打开记录时,您可以使用某种js/ajax功能来保持密钥到期的新鲜性。您可能会变得更加古怪,并且只会从输入事件或类似事件中刷新过期时间。这是一个通用的方法,有很多方法可以实现。我不认为我会走这条路,这听起来很痛苦,而且可能会造成问题。为什么不在编辑记录时使用外部共享数据密钥存储(如memcache)或其他东西来锁定某个密钥/用户的记录id?如果有人试图在另一个用户正在编辑时访问该文档,您可以显示该文档已锁定。这样就不会造成数据库死锁。您可以使用某种ajax或类似的方法刷新锁(如果用户使用AFK等,则为其提供一个合理的超时时间)。只是想一个替代方法。好的。我希望我能理解正确的方式。。。我应该使用memchache来存储被编辑的条目的id(有一定的过期时间)。每次有人打开一个编辑页面,我都会检查这个条目的键是否存在于memchache中?是的,类似的。当用户打开记录时,您可以使用某种js/ajax功能来保持密钥到期的新鲜性。您可能会变得更加古怪,并且只会从输入事件或类似事件中刷新过期时间。这是一种通用方法,有很多方法可以实现。