通过php执行多个合并neo4j查询

时间:2015-12-17 06:34:15

标签: neo4j

到目前为止,我正在使用neo4j查询,但我想知道它是否会使neo4j内存不足,因为我没有在任何地方提交(我猜它是自动提交)。但查询工作得很好只担心如果neo4j因我的查询而关闭或减速。我真的很感激任何帮助。

sample.php

<?php
if (!empty($array)) {
if( get_magic_quotes_gpc() ) {
        $array = stripslashes( $array );
    }
    $newstr = json_decode( preg_replace('/[\x00-\x1F\x80-\xFF]/', '', $array), true );
    if(!empty($newstr)){
        $j=0;
        foreach($newstr as $item) { //foreach element in $arr
            $category_id = $item['category_id']; //etc
            $category_name = $item['category_name'];
            $category = $item['category'];

            $data2 .=' MERGE (u'.$j.':Category {name:"'.$category_name.'",id:"'.$category_id.'",category:"'.$category
                .'"}) ';
            $j=$j+1;
        }

        $data2 = array("query" =>$data2);
        $data_string = json_encode($data2);

        $ch = curl_init('http://localhost:7474/db/data/cypher');
        curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
        curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_HTTPHEADER, array(
                'Content-Type: application/json',
                'Content-Length: ' . strlen($data_string))
        );
        $result = curl_exec($ch);

    }else{
        echo "null";
    }
}

?>

1 个答案:

答案 0 :(得分:0)

您正在使用Legacy Cypher HTTP Endpoint,它会在成功查询结束时自动提交。因此,无需担心丢失数据。

但是,现在不推荐使用旧版终结点,因此您应该考虑转换为Transactional endpoint

此外,作为建议,您可以更改此代码段:

' MERGE (u'.$j.':Category {name:"'

为:

' MERGE (:Category {name:"'

您的查询从不使用uxxx标识符,因此无需首先定义它们。