为长时间运行的PHP进程合并jquery UI进度条

为长时间运行的PHP进程合并jquery UI进度条,php,twitter-bootstrap,jquery-ui,Php,Twitter Bootstrap,Jquery Ui,我正在开发一个聊天日志管理器——我想对Thunderbird的聊天日志档案进行更多的控制。有一个同步功能,基本上解析日志文件并将消息上载到数据库,将日志压缩并存储在归档文件夹中 这个过程需要很长时间才能运行,我想显示一个进度条。我同时使用jQueryUI和Bootstrap,所以可以接受一个利用这两者的解决方案 到目前为止,我已经尝试实现了这两种方法,但都没有效果。进度条没有显示,我也无法判断它是否在递增 到目前为止,我已经粘贴了代码。任何帮助都将不胜感激。。。我有CSS的基本知识,我对java

我正在开发一个聊天日志管理器——我想对Thunderbird的聊天日志档案进行更多的控制。有一个同步功能,基本上解析日志文件并将消息上载到数据库,将日志压缩并存储在归档文件夹中

这个过程需要很长时间才能运行,我想显示一个进度条。我同时使用jQueryUI和Bootstrap,所以可以接受一个利用这两者的解决方案

到目前为止,我已经尝试实现了这两种方法,但都没有效果。进度条没有显示,我也无法判断它是否在递增

到目前为止,我已经粘贴了代码。任何帮助都将不胜感激。。。我有CSS的基本知识,我对javascript的知识充其量是有限的

HTML头

<script>
    function UpdatePBar(x){
        $( "#progressbar" ).progressbar( "value", x );}
</script>
HTML正文

<div id="progressbar"></div>
同步进程

if(count($this->Contacts) > 0)
        {
            //GET CONTACTS ALIASES
            $result = $this->GetContacts_aliases($folderPath);
            if($result) {
                echo '<script>UpdatePBar(10)</script>';
                flush();
                //SYNCH CONTACTS
                $result = $this->synch_Contacts();
                echo '<script>UpdatePBar(20)</script>';
                flush();
                if ($result) {
                    //SYNCH MESSAGES
                    $result = $this->synch_Messages($folderPath);
                    echo '<script>UpdatePBar(50)</script>';
                    flush();
                    if ($result) {
                        //SYNCHING SUCCESSFULLY COMPLETED
                        $log = "Synching of Messages Complete without errors. <br><br>";
                        $this->log = $this->log . $log;

                        //UPDATE LAST SYNCHED
                        $result = $this->UpdateLastSynched();
                        echo '<script>UpdatePBar(70)</script>';
                        flush();
                        if (!$result) {
                            //Update lastSynched failed
                            $log = "Updating lastSynched failed! <br><br>";
                            $this->log .= $log;
                        } else {
                            $log = "Updated Last Synched date stamp without errors <br><br>";
                            $this->log .= $log;

                            //ARCHIVE LOGS
                            $result = $this->ArchiveLogs($folderPath);
                            echo '<script>UpdatePBar(100)</script>';
                            flush();
                            if ($result) {
                                $log = "Archiving of log files successful!<br><br>";
                                $this->log .= $log;
                            } else {
                                $log = "Archiving of log files unsuccessful.<br><br>";
                                $this->log .= $log;
                            }

                        }
                    } else { 
...

感谢您抽出时间

我认为您应该通过递归ajax调用来实现这一点

在php上创建一个返回百分比的文件

Example: getPercentage.php 
<?
//do your stuff

echo $PERCENTAGE;
?>

Then on jquery:

<script>
readPHP();

function readPHP () {
   var file="getPercentage.php";

    $.ajax({
        url: file,
        cache: false,
        success: function (data , status ) {
         percentage=data;
         if (percentage < 100)
         {
           $("#progressbar").progressbar({
               value:percentage
           })
           setTimeout(readPHP(),1000);
         }
         else
         {
           $("#progressbar").progressbar({
               value:percentage
           })

         }
        }
   })
}
</script>

当你说没有用时,那更具体的意思是什么?进度条根本不显示吗?它没有正确更新吗?我认为对问题进行更详细的描述将有助于潜在的回答者。我将更详细地更新该问题,但结果是该栏不会显示。。。我无法判断它是否在递增。我不知道如何合并它,因为我的进程在一个类中。我创建了一个名为Synch的对象,其中有启动进程的函数。我的代码是从这个函数粘贴的,我理解。我的解决方案是使用更灵活的代码。在函数中,在执行UpdatePBarxx的地方,如果可以替换数据库中的记录更新,甚至文本文件更新,那么可以在getPercentage.php上阅读。