2013-11-20 132 views
3

我已經有了一個帶有一些html和php的網頁。 PHP在那裏執行一些Linux命令。我想在自己的網頁上放置一個引導進度條,當下一個linux命令執行完畢時,進度條會進展。假設我執行了4條linux命令,每次命令執行完畢,進度條都會進一步增加25%。php中的Bootstrap進度條

我已經在網上搜索,但找不到任何我需要的東西。有什麼建議麼?

只得到了PHP/HTML的一部分至今:

function progressbarStatus($width) { 

    echo " 
      <div class = 'container'> 

        <div class = 'progress progress-striped active'> 

          <div class = 'progress-bar' role = 'progressbar' aria-valuenow = '$width' aria-valuemin = '0' aria-valuemax = '100'style = 'width: $width%'></div> 

          </div> 

        </div> 

      </div> 
      "; 

} 
+2

使用AJAX請求來查看命令是否已經執行並相應地更新條的寬度。你可以添加一些你已經擁有的代碼嗎? – vonUbisch

+1

我唯一擁有的是帶進度條的html部分。 – Beeelze

+1

我會啓動一個腳本異步,將其狀態寫入某種類型的存儲(mysql,memcache,內存,文件等),然後創建一個ajax腳本來檢查狀態,或者查看一個ajax請求的長輪詢,如果你選擇長輪詢,應該警告,對於某些瀏覽器,你需要做一些類似echo str_repeat('',1024)的操作來啓動進程。 –

回答

3

做到這一點的方法和的jQuery一個非常簡單的格式這裏演示;

您將發送一個AJAX請求到您的PHP頁面,該頁面將返回一個json_encode(array('success'=>true));,當它被接收並接受時,進度條更新並且下一個函數將開始加載。

我還沒有測試過這個,它非常粗糙,但它顯示了你(以一種簡單的方式)你可以使用的技術。

$.getJSON('linkToLinuxCommand1.php').done(function(data) { 
    if (data.success === true) { 
     $('.progress').css('width', '25%'); 
     $.getJSON('linkToLinuxCommand2.php').done(function(data) { 
      if (data.success === true) { 
       $('.progress').css('width', '50%'); 
       $.getJSON('linkToLinuxCommand3.php').done(function(data) { 
        if (data.success === true) { 
         $('.progress').css('width', '75%'); 
         $.getJSON('linkToLinuxCommand4.php').done(function(data) { 
          if (data.success === true) { 
           $('.progress').css('width', '100%'); 
           alert('Done!'); 
          } 
         }); 
        } 
       }); 
      } 
     }); 
    } 
}); 

一些言論;

  • 只要Linux的命令不回PHP說話,你只能得到PHP頁面done狀態
  • 也許你需要更多的參數添加到getJSON要求
  • 我m不知道JSON是否返回布爾型truefalse,所以也許你需要檢查一個字符串; data.success === "true"
  • 繼續檢查什麼data的回報,使用(你設置返回JSON你的PHP頁面後)console.log(data)
  • 您可能要結合這些功能來觸發,如$('#button').click(function() {/* PLACE HERE */});,並把一切都在一個遞歸函數
+1

Thx,我會研究它! – Beeelze

+1

是的,我也有一個按鈕,之後,進度條應該開始。例如Thx! – Beeelze

+1

你能否看看我在下面發佈的代碼?爲了測試,我用jQuery腳本和一個按鈕創建了一個簡單的頁面。似乎沒有任何迴應.. – Beeelze

2

這真的取決於你的具體需要什麼。但是,正如你所描述的那樣,它應該通過ajax完成。問題在於,ajax不允許響應延遲,因此您必須爲每個相應的任務進行ajax調用。

http://api.jquery.com/jQuery.ajax/

+1

在我的PHP腳本中有幾點我想要進度條進一步進步。我不一定需要檢查它們是否已完成,我只是想在調用php函數後更新進度條。 – Beeelze