Laravel:为什么数据库 Seeder 在我的快速电脑上如此慢

Art*_*ils 2 php virtualbox vagrant laravel laravel-seeding

我在 Win10 上的 Homestead Vagrant 盒子上运行典型的 Laravel 版本 5.2.23,配有快速 NVMe ssd、Skylake i7 6700K cpu、16GB ram。VirtualBox 5.0.26 r108824。我为虚拟机分配了 4GB 和 2 个 CPU。几乎一切都是默认的。

这个非常基本的用户表播种器需要 45 秒才能处理 1000 条记录,而我之前使用 Laravel 4.2 时,在速度慢得多的电脑上获得了更快的性能。当我访问 localhost 站点时,它会快速加载数据(我只是回显 index.html 中的整个 1000 条记录用户表),因此看起来不像 VM 和 Win10 之间的网络流量减慢,而是 idk。

播种机在下面。

class UsersTableSeeder extends Seeder {

public function run() {
    DB::table('users')->truncate();

    for( $ii = 0; $ii < 1000; $ii++)
    DB::table('users')->insert([
        'name' => $ii,
        'email' => $ii.'@gmail.com',
        'password' => bcrypt('secret'),
    ]);


}

}
Run Code Online (Sandbox Code Playgroud)

我知道有时基于 Linux 的虚拟机可能会出现奇怪的 Windows 文件系统速度下降的情况,但我不确定这里发生了什么。任何帮助都会很棒。

And*_*kov 5

因为bcrypt函数调用很慢。通常一次操作大约需要 50ms(根据机器的不同可能会更快)。(50ms * 1000op) / 1000ms = 50s。

查看更多为什么php的password_hash这么慢?