例如:在盘点表的数据提交中出现了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方式提交无法完全接受的问题的更多相关文章

  1. MySQL数据库如何解决大数据量存储问题

    利用MySQL数据库如何解决大数据量存储问题? 各位高手您们好,我最近接手公司里一个比较棘手的问题,关于如何利用MySQL存储大数据量的问题,主要是数据库中的两张历史数据表,一张模拟量历史数据和一张开 ...

  2. hadoop job解决大数据量关联时数据倾斜的一种办法

    转自:http://www.cnblogs.com/xuxm2007/archive/2011/09/01/2161929.html http://www.geminikwok.com/2011/04 ...

  3. 利用MySQL数据库如何解决大数据量存储问题?

    提问:如何设计或优化千万级别的大表?此外无其他信息,个人觉得这个话题有点范,就只好简单说下该如何做,对于一个存储设计,必须考虑业务特点,收集的信息如下:1.数据的容量:1-3年内会大概多少条数据,每条 ...

  4. MySQL数据库解决大数据量存储问题

    转载自:https://www.cnblogs.com/ryanzheng/p/8334915.html 提问:如何设计或优化千万级别的大表?此外无其他信息,个人觉得这个话题有点范,就只好简单说下该如 ...

  5. 解决大数据难题 阿里云MaxCompute获科技大奖

    摘要: 据介绍,MaxCompute(大规模分布式的数据计算平台)是国内最早自研的大数据计算平台之一,主要应用于大规模数据处理场景.目前,这项源自浙江.解决世界级难题的成果已拥有EB(百京)级别的数据 ...

  6. Redis集合解决大数据筛选

    Redis集合:集合是什么,就是一堆确定的数据放在一起,数学上集合有交集.并集的概念,这个就可以用来做大数据的筛选功能. 以商品为例,假如商品有颜色和分类.价格区间等属性. 给所有统一颜色的商品放一个 ...

  7. WCF 客户端解决大数据量传输配置

    1. 服务端返回数据给客户端报错 在客户端配置文件中,主要是配置maxReceivedMessageSize <system.serviceModel> <bindings> ...

  8. MSSQL大数据量增加字段耗时对比

    单个数据表记录数为1亿4千万条. 一.测试同时增加两个允许为空的字段. ALTER TABLE [dbo].[XRecord] ADD [sType] int,[cType] int GO 开始时间: ...

  9. 多线程外排序解决大数据排序问题2(最小堆并行k路归并)

    转自:AIfred 事实证明外排序的效率主要依赖于磁盘,归并阶段采用K路归并可以显著减少IO量,最小堆并行k路归并,效率倍增. 二路归并的思路会导致非常多冗余的磁盘访问,两组两组合并确定的是当前的相对 ...

随机推荐

  1. 路飞学城-Python开发集训-第1章

    学习体会: 在参加这次集训之前我自己学过一段时间的Python,看过老男孩的免费视频,自我感觉还行,老师写的代码基本上都能看懂,但是实际呢?....今天是集训第一次交作业的时间,突然发现看似简单升级需 ...

  2. matlab 整局-部视知觉实验(读取excel点阵设计图替换数据)

    -------给我那编程盲的女盆友,我怎么感觉是我选了一门课???做了这么多次作业,还是整理出来吧,要知道双鸭山大学心理系单身妹子还是很多啊. 整体-局部范式是心理学的经典实验之一.请尝试利用 MAT ...

  3. Vue.js项目详解

    还是以Blog项目来讲解,最近我本人利用闲暇时间,以博客作为参考学习一些新的技术并尝试之前没有尝试过的思路来玩玩. 技术看似枯燥,但是带有一个目的来学,你会发现还是蛮有趣的. 主要实践的就是前后端分离 ...

  4. gooderp安装

    在做ODOO的前提下需要PostgreSQL,  SO.... #!/bin/bashPID=`echo $$`echo -e "\033[35m该脚本只在CentOS 7.4.1708版本 ...

  5. 环境部署(三):Linux下安装Git

    Git是一个开源的分布式版本控制系统,可以有效.高速的处理从很小到非常大的项目版本管理,是目前使用范围最广的版本管理工具. 这篇博客,介绍下Linux下安装Git的步骤,仅供参考,当然,还是yum安装 ...

  6. face detection[DSFD]

    本文来自<DSFD: Dual Shot Face Detector>,时间线为2018年10月,是南理工Jian Li在腾讯优图实验室实习时候的作品.在WIDER FACE,FDDB上效 ...

  7. Feature Extractor[VGG]

    0. 背景 Karen Simonyan等人在2014年参加Imagenet挑战赛的时候提出的深度卷积神经网络.作者通过对2013年的ILSVRC中最好的深度神经网络模型(他们最初的对应模型都是ale ...

  8. Java调用FFmpeg进行视频处理及Builder设计模式的应用

    1.FFmpeg是什么 FFmpeg(https://www.ffmpeg.org)是一套可以用来记录.转换数字音频.视频,并能将其转化为流的开源计算机程序.它用来干吗呢?视频采集.视频格式转化.视频 ...

  9. 搭建SpringBoot+dubbo+zookeeper+maven框架(四)

    今天我们完成框架的thymeleaf模板显示页面功能,页面的用户登陆,密码的AES加密解密,输错3次进行验证码验证功能,东西可能比较多,这个是我这两天在网上结合各种资源整合出来的,基本功能都已经实现, ...

  10. Linux每天一个命令:iostat

    iostat用于输出CPU和磁盘I/O相关的统计信息 安装Sysstat工具包 centos: yum install sysstat ubuntu: sudo apt-get install sys ...