2013-01-22 27 views
1

我知道主題的標題不清楚,但我會解釋該標題的用意。每個任務完成後的打印信息

首先
我有一個窗體包含一些字段,並提交按鈕。 這形式將喜歡upgrade2.php另一頁的請求:

<form action="upgrade2.php" method="post"> 
    <input ......> 
    <input ......> 
    <input type="submit" name="open_upgrade2" value="ok" /> 
</form> 

現在,upgrade2.php的頁面已經超過喜歡的任務如下:

<?php 
    task 1 
    task 2 
    task 3 
?> 

我想是每個任務的打印結束後消息像:

<?php 
    task 1 
    echo task 1 finished 
    task 2 
    echo task 2 finished 
    task 3 
    echo task 3 finished 
?> 

我試過用sleepob_flushflush函數停止執行一段時間來打印消息,然後繼續執行,但不幸的是,腳本必須在同一時間執行所有taskst,然後告訴我結果,但這不是我想要的。

我想在每個任務結束後打印消息。

+0

你將不得不分裂任務和調用每個任務ajax,我想這將是最好的解決方案 – Moseleyi

+0

你需要什麼打印完成的消息?如果腳本將自動繼續,直到完成後纔看到消息不應該成爲問題。當腳本刷新緩衝區時,它們將按照時間順序進行排序,因此,如果這是您的問題,則只需等待腳本完成即可。 –

回答

0

你必須做一些事情:

1)關閉ob_caching(或每個任務/輸出後添加使用ob_flush)

2)每個任務/輸出後使用flush或取消緩衝

3)確保在腳本完成之前,網絡服務器不緩存/等待/緩衝。 這取決於modul/cgi/webserver。我認爲這是你的問題。

嘗試先在cli上編程並檢查輸出。 然後通過網絡服務器運行它。 你使用哪個網絡服務器,它如何使用/調用/執行PHP?

+0

我在每個任務'ob_end_flush()'和'flush()'後使用。現在工作正常。 –

0

不久之前,我做了類似的事情,但用了一些工作來展示。

我不是依賴於php flush功能,而是使用AJAX調用來檢索存儲在memcache中的狀態。

我爲ajax請求創建了一個文件,它將簡單地返回當前登錄用戶的memcache值,該用戶是具有任務的數組以及他們的完成狀態(true或false)。 並取決於那個結果JavaScript會改變HTML。

對於進程腳本,每次任務完成時只需編輯memcache值。

它似乎是一個很大的工作,但它在一個小時內就可以很好地實現,而且你可以更好地控制輸出的HTML。

+0

在這個PHP文件中,我不使用JavaScript,也不需要使用JavaScript。 –