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执行查询时非常慢,但通过webadmin执行查询时非常快_Php_Neo4j - Fatal编程技术网

Neo4j在通过PHP执行查询时非常慢,但通过webadmin执行查询时非常快

Neo4j在通过PHP执行查询时非常慢,但通过webadmin执行查询时非常快,php,neo4j,Php,Neo4j,我有以下问题。 我写了一个问题: MATCH (n:RealNode {gid:'58687'})-[:CONTAINS*..15]-(z) RETURN DISTINCT ID(z), z.id,n.id as InternalID 我运行了一个PHP脚本(通过发送POST请求)。需要很长时间才能得到响应,有时neo4j会挂起。 我在Neo4jWebadmin中尝试了相同的查询,并在ms中得到了响应 你知道为什么在第一种情况下,反应会花那么多时间吗 已编辑 这将使用CURL处理请求:

我有以下问题。 我写了一个问题:

  MATCH (n:RealNode {gid:'58687'})-[:CONTAINS*..15]-(z) RETURN DISTINCT ID(z), z.id,n.id as InternalID
我运行了一个PHP脚本(通过发送POST请求)。需要很长时间才能得到响应,有时neo4j会挂起。 我在Neo4jWebadmin中尝试了相同的查询,并在ms中得到了响应

你知道为什么在第一种情况下,反应会花那么多时间吗

已编辑 这将使用CURL处理请求:

   $obj_id = $_POST['datastr'];
   $dataArr = array("query" => "MATCH (n {gid:'$obj_id'})-[:CONTAINS*..15]-(z) RETURN DISTINCT ID(z), z.id,n.id as InternalID");

  $data = json_encode($dataArr);
  $curl=curl_init();
  curl_setopt($curl,CURLOPT_HTTPHEADER,array('Accept: application/json; charset=UTF-8','Content-Type: application/json','Content-Length: ' . strlen($data),'X-Stream: true'));
  curl_setopt($curl, CURLOPT_URL, 'http://localhost:7474/db/data/cypher/');  
  curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "POST"); //type of request   
  curl_setopt($curl, CURLOPT_POSTFIELDS,$data); // data to post
  curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); // return response as string
  $response = curl_exec($curl);
  echo $response;
  curl_close($curl);

您正在使用传统的密码端点

我建议您使用Cypher http事务端点并使用查询参数


您还可以使用像这样的php neo4j驱动程序,这样可以减轻curl的负担,并提供一个漂亮的响应格式化程序。

如何用php发送查询?您使用的是像neoclient这样的驱动程序吗?您是否使用像guzzle这样的http库?还是仅仅利用Curl?我使用Curl来提出请求。我用CURL请求编辑了我的问题。嗯,您使用的是旧的cypher端点,我想使用cypher事务端点会得到更好的结果。您的意思是什么?我应该通过事务获取我的查询吗?比如:“语句”=>MATCH(n{gid:'$obj_id})-[:CONTAINS*.15]-(z)返回不同的id(z),z.id,n.id作为InternalID”?我回答说谢谢。但我认为我只使用transactions将数据上传到数据库(例如cretate节点等)。我现在写了一条语句,得到了一些类似的结果,但我不知道如何读取这样一个查询的响应。实际上,它没有返回任何信息!这就是neo4j驱动程序将提供帮助的地方。对于没有返回任何信息的查询,您需要提供更多详细信息,例如curl请求的调试,这表明http响应仍然没有返回当然,如果我可以发送一个事务语句来检索数据。文档中没有类似的内容。所有示例都与创建节点有关。当然,您可以为尼斯php设置和示例检索数据。我建议您阅读此和此