Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.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
事务中的Neo4j和Php句柄计数器_Neo4j_Counter_Neo4jphp - Fatal编程技术网

事务中的Neo4j和Php句柄计数器

事务中的Neo4j和Php句柄计数器,neo4j,counter,neo4jphp,Neo4j,Counter,Neo4jphp,场景是这样的: 我创建了一个名为计数器节点的单节点。它的初始值为0,并随着用户在我的网站上创建帐户而递增 因此,有三种操作恰好可以操作此操作: 读取计数器节点值 在php中执行一些逻辑。此处将计数器节点的上一个值设置为+1 写入计数器节点的新值 现在的问题是,若两个或多个用户在同一时间到达,并且创造了这样一个条件 在第一个用户向计数器节点写入新值之前,第二个用户正在读取该值。因此,这将使我的“计数器节点”的值处于不稳定状态 希望你明白我的意思 有什么解决办法吗 我正在使用neo4j 1.9.5和

场景是这样的:

我创建了一个名为
计数器节点的单节点。它的初始值为0,并随着用户在我的网站上创建帐户而递增

因此,有三种操作恰好可以操作此操作:

读取
计数器节点

在php中执行一些逻辑。此处将计数器节点的上一个值设置为+1
写入计数器节点的新值

现在的问题是,若两个或多个用户在同一时间到达,并且创造了这样一个条件

在第一个用户向计数器节点写入新值之前,第二个用户正在读取该值。因此,这将使我的“计数器节点”的值处于不稳定状态

希望你明白我的意思

有什么解决办法吗

我正在使用neo4j 1.9.5和php

Php Jadell:

我听说过批量处理,但不确定它是否会起作用。如果有任何解决方案,请给我一个简短的例子


感谢Amit Aggarwal

您不能用纯REST API实现这一点。我会用Cypher试试,也许是这样:

START n=node(123)
SET n.noOfUsers = n.noOfUsers + 1
RETURN n.noOfUsers
这应该在最新版本的Cypher中起作用

使用纯RESTAPI无法做到这一点。我会用Cypher试试,也许是这样:

START n=node(123)
SET n.noOfUsers = n.noOfUsers + 1
RETURN n.noOfUsers
这应该在最新版本的Cypher中起作用
Neo4j 2.0具有强制事务。如果在事务中增加计数器属性
noOfUsers
,我认为这将有助于解决并发性问题

只是一个想法,但首先是一个问题:计数器的用途是什么?它是用来分配用户ID的,还是严格意义上的信息?如果是后者,你必须有一个准确的数字吗?例如,如果你想知道twitter或facebook用户的总数,那么如果这个数字减少了几位,那又有什么关系呢?如果计数不需要精确(或某个特定实例的时间精确),则可以运行定期进程来返回用户节点的计数,如:

匹配n:用户
返回计数(*)

这也将帮助您处理已删除的节点。

Neo4j 2.0具有强制事务。如果在事务中增加计数器属性
noOfUsers
,我认为这将有助于解决并发性问题

只是一个想法,但首先是一个问题:计数器的用途是什么?它是用来分配用户ID的,还是严格意义上的信息?如果是后者,你必须有一个准确的数字吗?例如,如果你想知道twitter或facebook用户的总数,那么如果这个数字减少了几位,那又有什么关系呢?如果计数不需要精确(或某个特定实例的时间精确),则可以运行定期进程来返回用户节点的计数,如:

匹配n:用户
返回计数(*)

这也将有助于处理已删除的节点。

Hello David,其目的是生成用户ID。。所以任何不一致都可能让我陷入大问题:(…你好,David,它的目的是生成用户ID..所以任何不一致都可能让我陷入大问题..):(…你好,Josh,我也试过了,我不知道为什么有时候它会更新正确的计数或者随机。这是代码你好,Josh,我也试过了,我不知道为什么有时候它会更新正确的计数或者随机。这是代码