Neo4jphp中的几个平行批次

时间:2014-04-10 17:51:10

标签: neo4j neo4jphp

是否可以一次创建多个批次?

例如,我有一个运行批处理的代码(批处理1)。在这个批处理中,我有一个方法,在其中有另一个批处理(批处理2)。代码无效。

当我删除上面的批次(批次1)时,我有一个创建的节点。也许一次只有一批可能吗?

示例代码如下:

$batch = $client->startBatch();

$widget = NULL;

try {
    $widgetLabel = $client->makeLabel('Widget');

    $widget = $client->makeNode();
    $widget
        ->setProperty('base_filename', md5(uniqid('', TRUE)))
        ->setProperty('datetime_added', time())
        ->setProperty('current_version', 0)
        ->setProperty('shared', 0)
        ->setProperty('active', 1)
    ->save();

    // add widget history
    $history = Model_History::create($widget, $properties);

    if ($history == NULL) {
        throw new Exception('Could not create widget history!');
    }

    $widget->setProperty('current_version', $history->getID());
    $widget->save();

    $client->commitBatch($batch);
} catch (Exception $e) {
    $client->endBatch();
}

批处理2位于Model_History :: create()方法中。我没有从这段代码中获得有效的$ widget - Neo4jphp节点。

1 个答案:

答案 0 :(得分:2)

如果正在使用另一个$client->startBatch()调用创建第二个批次,则它实际上与$batch的批处理对象相同。如果从那里调用$client->commitBatch(),它将提交外部批处理(因为它们是相同的。)

不要在Model_History::create()中开始第二批。启动外部批处理,遍历所有代码,最后提交一次。