例如:在盘点表的数据提交中出现了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();