PHP和AJAX:过程中的回声

时间:2016-05-18 10:11:33

标签: php jquery ajax logging echo

这里的问题很少。

我有一个通过AJAX调用的php函数,如下所示:

CREATE FUNCTION CountClientProductDistributions(@ClientID INT)
RETURNS INT
AS 
BEGIN
   RETURN (SELECT COUNT(1) FROM dbo.Suplier WHERE ClientID = @ClientID AND ProductDistribution = 1)
END
GO

ALTER TABLE dbo.Suplier
ADD CONSTRAINT Suplier_CheckClientProductDistribution CHECK (dbo.CountClientProductDistributions(ClientID) <= 1);
GO

我正试图获得“实时日志”回声。在每个步骤之前的含义,回声应该一步一步地输出到Log区域。所以用户知道发生了什么。

但问题是,在过程中没有出现日志,它只是在过程结束时填写整个文本。其他一切都很好。 Log只是在运行时没有出现,但在功能完成后它出现在正确的位置。

我的AJAX电话:

function processActiveDirectory(){
    $var = new GetLDAPUsers;

    echo "Getting Users from Active Directory.... <br />";        

    $adusers = $var->getAllUsers();
    echo "setting up images.... <br />";
    // processing more stuff
    echo "finished";
}

这是它的构建方式:

Ajax and PHP File

修改

除了这个thread我已经在使用ajax调用之外,调用该函数。它在被调用的函数中,我正在回应... ...

修改2

我正在使用wordpress

抱歉,由于企业限制,我无法提供更多信息。

2 个答案:

答案 0 :(得分:2)

这是对您需求的简短概述。请进一步发展这个想法。

这使用两个AJAX调用 - 一个用于主进程,另一个用于进程:

<强>脚本:

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
<script type="text/javascript">
    //Start the main process
    $.ajax({
        url: 'main.php',
        success: function(data) {
        }
    });

    function getProgress(){
        $.ajax({
            url: 'progress.php',
            success: function(data) {
                $("#progress").html(data);
                if(data != "finished"){
                    getProgress();
                }
            }
        });
    }

    //Start the progress section
    getProgress();
</script>
<div id="progress"></div>

<强> main.php

<?php
$arr = ['Getting Users from Active Directory....','setting up images....','finished'];
foreach($arr as $value) {
    session_start();
    $_SESSION["progress"]=$value;
    session_write_close();
    sleep(1);
}

<强> progress.php

<?php
session_start();
sleep(1);
echo $_SESSION["progress"];

因此processActiveDirectory将归Main.php所有,且echo应替换为SESSION变量

答案 1 :(得分:0)

我认为在使用AJAX的LOG过程中没有必要。 AJAX太重了,如果你想要它可能是一个糟糕的设计。最好使用网络套接字或不使用