У меня есть следующая проблема. Я написал запрос:
MATCH (n:RealNode {gid:'58687'})-[:CONTAINS*..15]-(z) RETURN DISTINCT ID(z), z.id,n.id as InternalID
который я запускаю через PHP-скрипт (отправив запрос POST). Требуется возраст, чтобы получить ответ, а иногда и neo4j зависает. Я попробовал тот же запрос в Neo4j webadmin, и я получил ответ в ms.
Любая идея, почему в первом случае ответ занимает так много времени?
EDITED Этот запрос с использованием 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.
Я рекомендую использовать транзакционную конечную точку Cypher http и использовать параметры запроса.
http://neo4j.com/docs/stable/rest-api-transactional.html
Также вы можете использовать драйвер php neo4j, такой как NeoClient, который избавит вас от бремени и предоставит довольно ответный форматтер.