laravel的最佳块大小是多少?

Tha*_*nor 5 php mysql postgresql laravel-5

我一直在研究一个Web应用程序,它从自己的服务器端的远程服务器读取一些数据.我正在使用Laravel,并且最初认为使用连接到远程数据库的方法开发我自己的php文件会更容易.这个php的作用是:从远程服务器(postgreSQL)获取数据并使用Eloquent将其插入Laravel.这是一些代码片段.

try {
    $dal = connect();
    //... some validations not relevant to the question
    $result = pg_query($query) or die('Query failed: ' . pg_last_error());
    $data = (array_values(pg_fetch_all($result)));
    $chunkOfData = array_chunk($data, 1000);
    foreach ($chunkOfData as $chunk) {
        insertChunkToDB($chunk);
    }
    closeDB($dal);
} catch(exception $e){
    Log::error('Error syncing both databases, more details: '.$e);
    exit(1);
}
Run Code Online (Sandbox Code Playgroud)

我的问题集中在array_chunk上.

我必须这样做,因为php崩溃了"内存不足错误".我使用了insertChunk函数,因此垃圾收集器会清理已经插入的数据.请注意,此代码完全正常运行(据我所知).

但是......如果pg_fetch_all已经检索到数据......是不是已经在内存中了?为什么程序没有崩溃呢?作为一个侧面问题,Laravel输入数据的速度有多快?使用较小的块(如100)会导致程序因迭代/垃圾收集之间的跳转而变慢吗?让事情变得最快的分裂数是多少?

哦,顺便说一下这是功能

function insertChunkToDB($chunk){
    foreach ($chunk as $element) {
        $object = json_decode(json_encode($element), FALSE);
        insertObjectToDB($object);
    }
}
Run Code Online (Sandbox Code Playgroud)

编码/解码完成后我就可以做到这一点

function insertObjectToDB($element){
    $LaravelModel = $element->id;
    $LaravelModel = $element->name; //and so on...
    $LaravelModel->save();    
}
Run Code Online (Sandbox Code Playgroud)

录制外键时,我会快速检查一下是否有相应的值,如果没有,我会快速向远程服务器发出额外的查询,将该数据记录在相应的表中.