我有一个非常有趣的问题。正如您在下面的代码中看到的,我将2个POST变量发送到我的PHP页面。其中一个变量是JSON数组。如果unsyncedContacts.length
是< 71,它按预期工作。一旦我们在数组中获得了71个项目,PHP页面将只识别前71个项目。我已经在chrome中查看了时间轴,因为这种情况正在发生,而且数据在MB之下。
任何建议或帮助都会非常感激,因为我不知所措。不会抛出任何错误,并且管理在页面之间发送的71条记录将被正确执行。
$.ajax({
url: 'ajax/upsert_contacts.php',
type: 'POST',
dataType: 'json',
data: {
"contacts": unsyncedContacts,//JSON array
"userInfo": localStorage.userInfo
}
})
.done(function(data) {
//do stuff here. i don't think its part of my issue
});
set_time_limit(0);//set the time limit for each contact to prevent breaking.
//POST DATA
$currentUsersName = json_decode($_POST['userInfo']['usersName']);
$contacts = $_POST['contacts'];
$aCount = count($contacts);//returns 71 at MOST
我尝试使用xdebugger逐步执行PHP,而$ aCount最多只返回71。正如我之前所说,如果在$ contacts中说出50个项目,那么它的效果会非常好。一旦达到72,就会变得奇怪
编辑:有人在评论中询问,但删除了它:"您的服务器的max_input_vars设置为什么?"。
max_input_vars 1000
答案 0 :(得分:0)
原来是max_input_vars
。
我在开发环境中启用了xdebug,由于某种原因,它没有显示PHP警告,说明我已超过1000(我传递的数组是一个具有14个属性的JSON对象)。
14 * 71 = 994,意味着下一个数组项将超过我设置的1000限制。为了解决这个问题,我使用php_value max_input_vars 20000
创建了一个.htaccess文件,以确保我的代码不会再次中断