0

假设User是扩展 Doctrine_Record 的模型,请考虑以下(任意)代码创建 5000 个用户记录。

$conn->beginTransaction();

for ($i = 1, $i < 5001, $i++) {

    $user = new User();
    $user->some_field = $i;
    $user->save();
    $user->free(true);
}

$conn->commit();

我发现此脚本在 30 秒后超时,并且无法创建所有用户。有没有办法优化此代码以更快地工作?我正在考虑只编写常规的旧 SQL 来创建记录,但随后我失去了 Doctrine_Record 的功能,包括插入钩子等(请注意,即使用户模型中没有钩子,此脚本也会超时)。

有什么建议吗?

4

1 回答 1

4

您应该尝试Doctrine_Collection允许批量插入的类:

$collection = new Doctrine_Collection('tablename');
$collection->add($record1);
$collection->add($record2);
$collection->add($record3);
$collection->add($record4);
$collection->save();
于 2012-05-07T15:06:54.937 回答