nomensa / bulk-inserter
v0.3.0
2018-04-06 14:12 UTC
Requires
- php: >=7.1.3
Requires (Dev)
- phpunit/phpunit: ~7.0
This package is not auto-updated.
Last update: 2024-09-25 01:40:41 UTC
README
注意:此辅助库目前仅针对运行在MySQL数据库上的Laravel框架。
如果您正在对新的应用程序进行压力测试,以查看它如何处理未来真实数据量,那么您可能正在编写一个插入数千行数据的seeder。
在PHP中使用多个单独的查询逐行插入数据可能很慢,可能会阻碍开发,甚至可能违反预处理语句限制。
此包利用MySQL的原生导入功能,因此您可以在循环内部准备数据,然后通过1次快速操作将所有数据一次性放入数据库,这比多次单独插入要快得多!
安装
$ composer require --dev -- nomensa/bulk-inserter
注意:请仅将其作为开发需求进行安装。
示例
以下示例将在几秒钟内插入一千个用户
use Nomensa\BulkInserter\BulkInserter; class ExampleSeeder { public function run() { $bulkInserter = new BulkInserter('users',['name','email']); for ($i = 0; $i < 1000; $i++) { $bulkInserter->addRow( '("User ' . $i . '","user' . $i . '@example.com")' ); } $bulkInserter->insert(); } }
如果使用Eloquent模型的方法'::create()'来完成上述任务,可能需要约20秒。
将这种延迟乘以所有模型表,考虑到在测试编写过程中您将多次调整和重新运行seeder,节省的时间会更多。使用此包可以让开发人员体验更愉快。
关于暴露漏洞的友好提醒!
此包在您的数据库中执行原始MySQL代码。请不要在生产环境中使用此包,并且绝对不要通过请求的输入来填充行的内容。
此包用于开发和测试期间,而不是日常应用程序逻辑。