PHP:脚本执行两次
我有一个php脚本,它处理用户上传的XML文件。当文件很大(比如50MB)时,可能需要几分钟的时间。在小文件上,它按预期的方式工作。但我面临一个大问题 因此,我的文件看起来像:PHP:脚本执行两次,php,ajax,apache,Php,Ajax,Apache,我有一个php脚本,它处理用户上传的XML文件。当文件很大(比如50MB)时,可能需要几分钟的时间。在小文件上,它按预期的方式工作。但我面临一个大问题 因此,我的文件看起来像: if(file_exist($filename)) { return array(false, "File with this name already exist"); } else { /* Processing of file */ return array(true, "
if(file_exist($filename)) {
return array(false, "File with this name already exist");
} else {
/*
Processing of file
*/
return array(true, "")
}
当用户使用javascript上传器上传文件时,我向这个脚本发出ajax请求。对于大文件,它执行两次。它第一次转到“处理”部分,第二次返回错误消息,即该名称的文件已经存在(实际上是真的)
我在脚本的开头添加了日志功能
$logger = Zend_Registry::get('logger');
$logger->log('assign file function called', 7);
我看到这个脚本被调用了两次
但在Firebug中,我只看到一个对脚本的ajax请求。在apacheaccess.log中,我只看到一个请求。Apache error.log为空
知道会是什么吗?可能有长时间执行脚本的配置吗
用于调用脚本的UPD Javascript
$("#save_file_btn").click(function(){
var filename = $("input#selected_file").val();
if(!filename.length) {
customAlert("Choose file at first");
return false;
}
$.ajax({
url: '/otms/publisher/assign-file-to-publisher',
beforeSend: function(xhr){
$("#add_form").html('<div class="loader"></div>');
},
dataType: 'json',
data: {filename: filename},
success: function(data) {
if(data.success) {
//Process added ONIX file
processOnixFile(data.fileId, function(){
getFileList();
$("#add_form").html('<div class="text-center">File has been successfully uploaded</div>');
setTimeout('$("#add_file_modal").modal("hide")', 2500);
});
} else {
var output = '';
$.each(data.error, function(index,value){
output += '<div class="bold">'+value.title+'</div>';
output += '<ul>';
$.each(value.errorList, function(i, errorMsg){
output += '<li>'+errorMsg+'</li>';
});
output += '</ul>';
});
$("#add_form").html('<div class="red">'+output+'</div>');
}
}
});
});
我仍然没有在我的应用程序日志或apache日志中看到任何错误消息。
正如我提到的那个样,脚本可以处理大文件,处理它可能需要几分钟的时间
在我的配置中:
max_execution_time = 300
而Chrome在1:40时间返回错误 没有任何配置可以让它执行一个脚本两次。你的代码中一定有什么东西在起作用。你应该共享你的Javascript代码,你知道问题发生在那个区域。@scrowler为什么你认为它在Javascript中?在这种情况下Firebug不会显示多个AJAX调用吗?因为Apache日志只显示一个请求,所以复制必须在PHP代码中发生。@scrowler我不认为,这种复制是在javascript中发生的。但如果您愿意,我可以添加javascript:)
max_execution_time = 300