Php 获得超过50000个结果会使Laravel 5.8上的服务器崩溃
我正试图从Laravel的数据库中获得400000个结果。我的问题是服务器给了我一个500错误代码,但没有生成日志文件。Php 获得超过50000个结果会使Laravel 5.8上的服务器崩溃,php,mysql,json,laravel,Php,Mysql,Json,Laravel,我正试图从Laravel的数据库中获得400000个结果。我的问题是服务器给了我一个500错误代码,但没有生成日志文件。 当我对我的查询设置一个限制时,它是有效的,但限制在20000左右。 可能是php ini文件,但我将其配置为: max_execition_time : -1 max_input_time : -1 max_input_vars: -1 memory_limit: -1 post_max_Size: -1 虽然Laravel给出了500个错误代码,但服务器没有给出错误。我需
当我对我的查询设置一个限制时,它是有效的,但限制在20000左右。
可能是php ini文件,但我将其配置为:
max_execition_time : -1
max_input_time : -1
max_input_vars: -1
memory_limit: -1
post_max_Size: -1
虽然Laravel给出了500个错误代码,但服务器没有给出错误。我需要40万个结果
(摘自评论中的OP):
代码只是按日期时间获取所有表的顺序
感谢您的帮助查看以下内容:
使用chunk
批量获取记录,并将其批量插入:
Model::orderBy('id'))
->选择(['col1','col2',…]))
->块(100,函数($records){
//在此处创建阵列:
$inserted_数组=[];
foreach($记录为$记录){
$inserted_attr=[];
$inserted_attr['column1']=$record->col1;
$inserted_attr['column2']=$record->col2;
...
$inserted_array[]=$inserted_attr;
}
//一次插入100条记录。
历史记录::插入($inserted_数组);
});
不要一次加载400.000条记录,这样做的原因可能是什么?你能把代码贴出来吗?为什么你需要这个?不要这样做。“用paginate,伙计。”大卫维克托里阿马丁内斯我建议你仔细阅读我的答案。不要一次用400'00做某事。一步一步地做,你就不会有任何问题。@DavidVictoriaMartinez我的意思是,如果你有100000条记录,你可以从数据库中获得1000条,然后他们创建你的历史记录表,然后再获得1000条记录,然后插入它们……即使你应该加载所有历史数据,也没有人会一次读取400.000条记录。您应该对此使用分页。