PHP:脚本执行两次

时间:2014-08-19 02:50:02

标签: 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, "")
}

当用户使用javascript上传程序上传文件时,我向此脚本发出ajax请求。事实是,对于大文件,它执行两次。它第一次进入“处理”部分,第二次返回错误,该文件名已经存在(实际上是真的)。​​

我在脚本的开头添加了日志记录功能

$logger = Zend_Registry::get('logger');
$logger->log('assign file function called', 7);

我看到该脚本已被调用两次。

但是在Firebug中,我只看到脚本有1个ajax请求。在Apache access.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>');

                }
            }

        });

    });

我检查过,这是唯一一个请求脚本'assign-file-to-publisher'(我有问题)的地方。


UPD 2.

我发现脚本只在Firefox浏览器中调用了两次。在Safari请求中不返回任何内容。在Chrome中,它会返回以下状态:

(failed) net::ERR_EMPTY_RESPONSE

我仍然没有在应用程序日志或apache日志中看到任何错误消息。 正如我所提到的,脚本适用于大文件,处理它可能需要几分钟。

在我的配置中:

max_execution_time = 300

Chrome浏览器在1:40时返回错误。

0 个答案:

没有答案