我有一个由jQuery和php生成的大型html表页面。 在此页面中有一个按钮,用于在Excel中导出表。 当我单击此按钮时,脚本会准备字符串并向PHP发送POST请求。
发送的字符串总共有大约60000个字符。
当我在php页面中$_POST
时,php服务器崩溃了。
我已经通过以下方式更改了php.ini文件:
max_input_vars = 15000
memory_limit = -1
upload_max_filesize = 100M
max_file_uploads = 20
这仍然不起作用。
有一些方法或解决方法可以解决此问题吗? 我试着修改我的代码很多时间。
这是代码:
JAVASCRIPT AJAX请求
function esporta(tipo,id,header,dati){
var dataString = "id="+id;
if(tipo == "excel"){
if(header != ""){
dataString += "&header="+header;
}else{
dataString += "&header=vuoto";
}
dataString += "&dati="+dati;
}
if($.trim(id).length>0){
$.ajax({
type: 'POST',
url: 'lib/excel-export.php',
data: dataString,
cache: false,
beforeSend: function(){
$('.se-pre-con').fadeIn('slow');
},
success: function(data){
$('.se-pre-con').fadeOut('slow');
if(data){
if(data == 'errore'){
alert('Errore!');
}else{
document.location = "lib/download.php?nomefile="+data;
}
}else{
alert('Errore! Mancata restituzione dei dati!');
}
}
});
}
}
PHP
...
$sheets = $wkb->Worksheets(1); #Select the sheet
$sheets->activate; #Activate it
$postheader = $_POST['header'];
$postdati = urldecode($_POST['dati']);
$header = explode(";",$postheader);
$dati = explode(";",$postdati);
...
以下代码
$postdati = urldecode($_POST['dati']);
崩溃服务器(如果我注释掉这一行,服务器不会崩溃)。 在excel中只有30000个字符。
请注意,我无法在PHP页面中执行数据库查询。我必须从该表中获取数据。
我在本地PC上使用appserver.io网络服务器。
提前谢谢。
答案 0 :(得分:0)
根据字符编码,60,000个字符仅为60KB或更多一点
你检查了php.ini的post_max_size
指令吗?
来自php.ini
的评论:
PHP将接受的POST数据的最大大小。 其值可能为0以禁用限制。如果禁用POST数据读取,则忽略它 通过enable_post_data_reading。 http://php.net/post-max-size