【问题标题】:Apache PHP looping, will it block other accesses to the server?Apache PHP循环,它会阻止对服务器的其他访问吗?
【发布时间】:2016-06-08 15:22:33
【问题描述】:

我现在使用 Phalcon 作为框架来构建我的服务器,并且我正在尝试在函数中实现循环。

例如,用户从页面提供输入,页面使用 ajax 将输入发布到我服务器的 url,然后我服务器上的 url 正在做一些可能持续 3 秒的循环工作。

此外,该页面将使用另一个 ajax 将 GET 发送到我服务器的另一个 url,以获取循环的进度。我在会话中存储了进度。

但是,似乎当服务器在循环时,它无法响应其他请求。根据我的观察,我可以看到第二个 ajax 被发送了多次,但是我得到的日志只表明第二个 url 的函数只被调用了一次。

这就是Phalcon的局限吗? php?阿帕奇?还是我在配置方面做错了什么?

这里显示了一些演示代码:

Javascript

function query(point)
{
    $.ajax(
    {
        url: "/work", 
        type: 'POST',
        dataType: 'json',
        data: {...},
        success: function(data, status)
        {
            alert(data);
            if(progressInterval)
            {
                clearInterval(progressInterval);
                alert("FINISHED");
            }
        },
        error: function(err)
        {
            if(progressInterval)
            {
                clearInterval(progressInterval);
                ertal("ERR");
            }
        }
    });
    progressInterval = setInterval(function()
    {
        alert("Send");
        $.ajax(
        {
            url: "/loadProgress",
            type: 'GET',
            dataType: 'text',
            success: function(data)
            {
                alert(data);
            }
        });
    }, 100);

};

work.php

function work()
{
    for($i=0;$i<3000;$i++)
    {
        do some work;
        store $i in session;
    }
    echo "finished";
}

loadProgress.php

function loadProgress()
{
    get $i from session;
    echo $i/3000;
}

【问题讨论】:

  • 问题可能很广泛。很大程度上取决于您所拥有的确切设置。如果您的 PHP 仅在单线程环境中运行,那么在我看来,它无法同时响应多个请求似乎很明显。但这可能是一个完全不同的故事,因为 php/apache 在多个 CPU 内核上的多个线程中运行。
  • 这是有道理的。但我发现我错过的是 session_write_close()

标签: php jquery ajax apache phalcon


【解决方案1】:

我在这里找到了我错过的东西。 写入会话后,我们必须调用 session_write_close()。 否则整个服务器将被锁定在会话中。

【讨论】:

    猜你喜欢
    • 2012-12-10
    • 1970-01-01
    • 2013-07-09
    • 2016-12-07
    • 2016-08-10
    • 2013-10-31
    • 2023-03-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多