Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
同时对PHP进行两次AJAX调用_Php_Html_Ajax_Session - Fatal编程技术网

同时对PHP进行两次AJAX调用

同时对PHP进行两次AJAX调用,php,html,ajax,session,Php,Html,Ajax,Session,我有一个表单,它向我的一个控制器提交一个AJAX请求,该控制器使用PHP的curl上传一个文件。我想向用户显示(PHP)上传的状态,因此我将PHP上传进度存储在会话变量中。同时,表单的提交还启动了一个setInterval(),它向检查会话变量的控制器发出不同的AJAX请求。我的问题是,第二个AJAX调用似乎只触发一次(而不是在整个上传过程中),因此它没有逐步更新进度,而是在最后返回100。我做错了什么 这是我的密码: (注意:我使用jQuery表单插件来帮助文件上传。它还添加了一些额外的回调)

我有一个表单,它向我的一个控制器提交一个AJAX请求,该控制器使用PHP的curl上传一个文件。我想向用户显示(PHP)上传的状态,因此我将PHP上传进度存储在会话变量中。同时,表单的提交还启动了一个
setInterval()
,它向检查会话变量的控制器发出不同的AJAX请求。我的问题是,第二个AJAX调用似乎只触发一次(而不是在整个上传过程中),因此它没有逐步更新进度,而是在最后返回100。我做错了什么

这是我的密码:

(注意:我使用jQuery表单插件来帮助文件上传。它还添加了一些额外的回调)


var check_progress=函数(){
$.ajax(
{
url:“/media/upload\u progress”,
成功:功能(数据){
控制台日志(数据);
},
异步:false
}
);    
变量选项={
beforeSend:function(){
$(“#MediaSubmitForm”).hide();
$(“#MediaSubmitForm”)。之后(“”);
t=设置间隔(检查进度,500);
},
成功:功能(数据){
$(“.hula hippo”).hide();
$(“#MediaSubmitForm”)。之后(“上传完成!Do您想拥有自己的吗?

”; 视窗间隔(t); 控制台日志(数据); } }; $(“#MediaSubmitForm”).ajaxForm(选项);
使用
setTimeout();
setInterval()
在指定的时间后执行代码,并且
setTimeout()
在每次到达指定时间时执行代码

这些问题很好地解释了它们的区别:)


搜索on SO将解决您的问题:)

听起来这是一个PHP锁定问题。请参阅此问题答案中的第一条注释:


可能是因为对您可以同时连接的数量有限制。顺便问一下,您将异步标志设置为false有什么原因吗?是您为php或从浏览器引用的连接数量吗?HTTP规范规定浏览器应将与服务器的同时连接限制为2。也可能是错误的根据服务器的配置对其进行限制。我想你是对的。我读了这个问题,并尝试在一些地方添加session_write_close(),但它仍然不起作用。你知道我应该在哪里添加它吗?
<script>
var check_progress = function() {
    $.ajax(
        {
            url : '/media/upload_progress',
            success : function(data) {
                console.log(data);
                },
            async : false

        }
    );    

var options = {
    beforeSend : function() {
        $("#MediaSubmitForm").hide();
        $("#MediaSubmitForm").after('<img class="hula-hippo" src="/img/hippo-hula.gif" />');

        t = setInterval( check_progress, 500 );

    },
    success : function(data){
        $(".hula-hippo").hide();
        $("#MediaSubmitForm").after("<h3>Upload complete!</h3><p>Do <strong>you</strong> want to <a href='#'>create a project</a> of your own?</p>");
        window.clearInterval(t);
        console.log(data);
    }    

};
$("#MediaSubmitForm").ajaxForm(options);
</script>