php配置-解决大数据超多字段的POST方式提交无法完全接受的问题
例如:在盘点表的数据提交中出现了POST大量数据超多字段的将近2000个字段,部分字段没有接受;修改方法为修改php.ini
将max_input_var调大,该值默认为1000
max_input_vars = 5000
相近的配置还有:
max_execution_time = 600 max_input_time = 600 memory_limit = 32m file_uploads = on upload_tmp_dir = /tmp upload_max_filesize = 32m post_max_size = 32m
在nginx中相近的配置有:
keepalive_timeout 60; send_timeout 3m; client_max_body_size 500m;
例如:修改上传图片的最大限制,避免entity too large的错误
首先,将php的upload_max_filesize 和 post_max_size 调大
再将nginx的 client_max_body_size 调大
或将apache的LimitRequestBody调大
//php配置 max_execution_time = 600 //设置页面访问超时时间为600s max_input_time = 600 //设置GET和POST等接收数据的最大超时时间为600s file_uploads = on upload_tmp_dir = /tmp upload_max_filesize = 50m //设置为50M post_max_size = 50m //设置为50M //nginx配置 client_max_body_size 50M //设置为50M //apache配置 LimitRequestBody 50 * 1024 * 1000 //设置为50M
例如:Allowed memory size of 134217728 bytes exhausted (tried to allocate 32 bytes)
注意这个不是因为memory_limit参数的问题,即使memory_limit配置的最大也有可能出问题;关键在于代码循环中unset变量;
我的php.ini中memory_limit原来为128M,报了这个错误;后来我将memory_limit调成1024M还是报同样的错误。
//处理原料出库单
$wmsMaterialOutSheetModels = \core\models\WmsMaterialOutSheet::find()->orderBy(['id'=>SORT_ASC])->all();
//提示文字
$tip = Console::ansiFormat(PHP_EOL."开始处理所有原料出库单的计件类型和非标准重量", [Console::FG_YELLOW]);
Console::output("{$tip}");
unset($tip);
//设置进度条
Console::startProgress(0, count($wmsMaterialOutSheetModels));
//轮询所有成品出库单
foreach ($wmsMaterialOutSheetModels as $key => &$wmsMaterialOutSheetModel){
$transtion = \Yii::$app->db->beginTransaction();
try{
//提示文字
$tip = Console::ansiFormat(PHP_EOL."正在处理原料出库单{$wmsMaterialOutSheetModel->wms_material_out_sheet_number}", [Console::FG_YELLOW]);
Console::output("{$tip}");
unset($tip);
//已经处理过则无需再次处理
if (\Yii::$app->redis->sismember("in_sheet_number_updated_piece_type", $wmsMaterialOutSheetModel->wms_material_out_sheet_number)){
throw new \yii\db\Exception(PHP_EOL."原料出库单{$wmsMaterialOutSheetModel->wms_material_out_sheet_number}已经更新过,无需再次更新");
}
//修改原料出库单
$wmsMaterialOutSheetModel->piece_type = 2;
$wmsMaterialOutSheetModel->off_standard_weight = $wmsMaterialOutSheetModel->wms_material_out_sheet_out_weight;
if(!$wmsMaterialOutSheetModel->save(false, ['piece_type', 'off_standard_weight'])){
throw new \yii\db\Exception(PHP_EOL."处理原料出库单{$wmsMaterialOutSheetModel->wms_material_out_sheet_number}失败");
}else{
$tip = Console::ansiFormat(PHP_EOL."处理原料出库单{$wmsMaterialOutSheetModel->wms_material_out_sheet_number}成功",[Console::FG_GREEN]);
Console::output("{$tip}");
unset($tip);
}
//修改原料出库单详情
$wmsMaterialOutSheetDetailModels = \core\models\WmsMaterialOutSheetDetail::find()->where([
'wms_material_out_sheet_number'=>$wmsMaterialOutSheetModel->wms_material_out_sheet_number
])->orderBy(['id'=>SORT_ASC])->all();
foreach ($wmsMaterialOutSheetDetailModels as $detail_key => $wmsMaterialOutSheetDetailModel){
$wmsMaterialOutSheetDetailModel->piece_type = 2;
$wmsMaterialOutSheetDetailModel->off_standard_weight = $wmsMaterialOutSheetDetailModel->wms_material_out_sheet_detail_out_weight;
if (!$wmsMaterialOutSheetDetailModel->save(false, ['piece_type', 'off_standard_weight'])){
throw new \yii\db\Exception(PHP_EOL."处理原料出库单{$wmsMaterialOutSheetModel->wms_material_out_sheet_number}详情{$detail_key}失败");
}else{
$tip = Console::ansiFormat(PHP_EOL."处理原料出库单{$wmsMaterialOutSheetModel->wms_material_out_sheet_number}详情{$detail_key}成功",[Console::FG_GREEN]);
Console::output("{$tip}");
unset($tip);
}
}
unset($wmsMaterialOutSheetDetailModels);
//更新进度条
Console::updateProgress($key+1, count($wmsMaterialOutSheetModels));
//如果是模拟更新则回滚
if (!$is_update){
throw new \yii\db\Exception(PHP_EOL."此次是模拟更新,不会真正更新计件类型和非标准重量,正在回滚到初始状态!");
}
$transtion->commit();
//将已更新的出库单号添加到已更新队列中
\Yii::$app->redis->sadd("in_sheet_number_updated_piece_type", $wmsMaterialOutSheetModel->wms_material_out_sheet_number);
}catch(\yii\base\Exception $e){
$transtion->rollBack();
$tip = Console::ansiFormat(PHP_EOL.$e->getMessage(),[Console::FG_RED]);
Console::output("{$tip}");
unset($tip);
}catch(\yii\base\ErrorException $e){
$transtion->rollBack();
$tip = Console::ansiFormat(PHP_EOL.$e->getMessage(),[Console::FG_RED]);
Console::output("{$tip}");
unset($tip);
}
unset($wmsMaterialOutSheetModel);
}
unset($wmsMaterialOutSheetModels);
//设置进度条
Console::endProgress();
php配置-解决大数据超多字段的POST方式提交无法完全接受的问题的更多相关文章
- MySQL数据库如何解决大数据量存储问题
利用MySQL数据库如何解决大数据量存储问题? 各位高手您们好,我最近接手公司里一个比较棘手的问题,关于如何利用MySQL存储大数据量的问题,主要是数据库中的两张历史数据表,一张模拟量历史数据和一张开 ...
- hadoop job解决大数据量关联时数据倾斜的一种办法
转自:http://www.cnblogs.com/xuxm2007/archive/2011/09/01/2161929.html http://www.geminikwok.com/2011/04 ...
- 利用MySQL数据库如何解决大数据量存储问题?
提问:如何设计或优化千万级别的大表?此外无其他信息,个人觉得这个话题有点范,就只好简单说下该如何做,对于一个存储设计,必须考虑业务特点,收集的信息如下:1.数据的容量:1-3年内会大概多少条数据,每条 ...
- MySQL数据库解决大数据量存储问题
转载自:https://www.cnblogs.com/ryanzheng/p/8334915.html 提问:如何设计或优化千万级别的大表?此外无其他信息,个人觉得这个话题有点范,就只好简单说下该如 ...
- 解决大数据难题 阿里云MaxCompute获科技大奖
摘要: 据介绍,MaxCompute(大规模分布式的数据计算平台)是国内最早自研的大数据计算平台之一,主要应用于大规模数据处理场景.目前,这项源自浙江.解决世界级难题的成果已拥有EB(百京)级别的数据 ...
- Redis集合解决大数据筛选
Redis集合:集合是什么,就是一堆确定的数据放在一起,数学上集合有交集.并集的概念,这个就可以用来做大数据的筛选功能. 以商品为例,假如商品有颜色和分类.价格区间等属性. 给所有统一颜色的商品放一个 ...
- WCF 客户端解决大数据量传输配置
1. 服务端返回数据给客户端报错 在客户端配置文件中,主要是配置maxReceivedMessageSize <system.serviceModel> <bindings> ...
- MSSQL大数据量增加字段耗时对比
单个数据表记录数为1亿4千万条. 一.测试同时增加两个允许为空的字段. ALTER TABLE [dbo].[XRecord] ADD [sType] int,[cType] int GO 开始时间: ...
- 多线程外排序解决大数据排序问题2(最小堆并行k路归并)
转自:AIfred 事实证明外排序的效率主要依赖于磁盘,归并阶段采用K路归并可以显著减少IO量,最小堆并行k路归并,效率倍增. 二路归并的思路会导致非常多冗余的磁盘访问,两组两组合并确定的是当前的相对 ...
随机推荐
- 史上最简单的springboot国际化多语言切换实现方案
每天学习一点点 编程PDF电子书.视频教程免费下载:http://www.shitanlife.com/code 前提: 在resources目录下建立 messages_en_US.properti ...
- Linux 分卷压缩
例如,要将大文件夹 PYNQ 分卷压缩成 1G 的单元大小,如下命令(类似的可以指定 tar 的参数为 czf 而生产 .tar.gz 格式的压缩包:可以指定分卷大小例如 500M 等),压缩完成后, ...
- Vim 中使用 vimim 来输入中文
Vim 中输入中文,要来回切换中英文,偶尔不慎的切换和按键,可能导致误删不能恢复的错误,一直是个很头疼的问题.现在有了 vimim 这个插件,整个世界清净了. 插件官方网站:http://www.vi ...
- appium+python自动化56-微信小程序自动化(摩拜为例)
前言 最近微信的小程序越来越多了,随之带来的问题是:小程序如何做自动化测试? 本篇以摩拜小程序为例,介绍如何定位小程序里面的元素 运行环境: android 7.0 appium v1.7.1 web ...
- Linux—日志查看(测试人员)
备注:在筛选语句后面加“--col”可以高亮显示查询结果中的关键字 cd /home/admin/logs/服务器名 #进入日志目录(错误日志文件:common-error.log),路径因公司而定 ...
- ASP.NET 管道
序号 名称 说明 1 BeginRequest ASP.NET开始处理的第一个时间,表示处理的开始 2 AuthenticateRequest 验证请求,一般用来取得请求的用户信息 3 PostAut ...
- face detection[Face R-CNN]
face r-cnn是腾讯ai实验室的作品,而且登录过腾讯ai实验室官网,发现果然硕果累累,不得不佩服. 1 引言 人脸检测虽然相对之前有了不小的进步,可是还是因为真实世界中人脸图像的明显变化导致仍然 ...
- 圆角矩形shader
在游戏中,有时需要对一张矩形图片进行切割,绘制成圆角矩形. circelrect.vert attribute vec4 a_position; attribute vec4 a_normal; at ...
- hibernate 解决诡异的mysql存入中文乱码
使用hibernate查询mysql,通过bean的get方法拿到字符串再写入mysql中的字段会中文乱码,需要String string = xxx.get(),把get方法拿到的值传入到新的str ...
- 美橙互联SSL 部署到IIS 7以上
前言:立秋已至,汗流浃背,感觉夏天正到最热的时候...广州某一“著名”大厦 老板:穆德(我),现在要开发个微信小程序.开搞吧. 我:纳尼?好吧.需要购买SSL证书(⊙o⊙)? 老板:神马鬼,有没有免费 ...