我想要有一個「加載消息」的種類,讓我知道PHP腳本在執行過程中的位置;爲了做到這一點,我試圖在整個過程中回顯HTML/JavaScript標記,但是在腳本的其餘部分運行之前,沒有任何回聲在執行。除了使用AJAX還有其他解決方法嗎,還是僅僅是獸的本質?試圖讓PHP發送HTML到服務器中間腳本
1
A
回答
1
阿賈克斯聽起來像是要走的路。使用一個請求開始大操作,並使用另一個請求定期輪詢。
有一點值得注意,但如果你使用會話:PHP的默認會話處理程序塊在session_start上,所以你不能處理同一會話的兩個請求。第二個會等到第一個會話關閉。如果您的輪詢在您的大操作完成之後才返回響應,則必須解決此問題。
如果操作非常大,請考慮在後臺而不是在請求期間運行它。您可以每隔一秒左右刷新一次進度頁面。不是很優雅,但可能更容易實施。
0
您可以讓腳本從您的服務器請求另一個文件,並在GET中傳遞信息。但我不會向任何人推薦這個。對於除調試以外的任何其他任何東西都基本沒用。
這甚至不會使用ajax來完成,因爲php完全在服務器上執行。 Ajax請求從用戶的瀏覽器執行。
另一種完成此操作的方法是在進行sql插入操作時。
編輯:如果你想實時的這個信息。這並不容易完成。你需要將我上面發佈的內容與ajax混合以在另一個頁面中請求信息。
0
我建議用AJAX做這兩個請求。第一個請求將工作,直到工作完成。第二個請求會每隔幾秒鐘重複一次,從數據庫中提取數據,並在JSON中迴應進度,然後由JavaScript進行解析並更新進度。你甚至可以在上面做一些進度條!
0
您可以使用flush
或ob_flush
(第一後已經開始與ob_start
) - 但是不同的瀏覽器會以不同方式處理髮送給他們的早期內容。一直以來的規則是真實的(我最近沒有檢查過),大多數瀏覽器在接收到一定數量的字節之前不會開始渲染任何東西。
現在,如你所知,有更好的方法來做到這一點。 Ajax可能是最好的。不過,我已經在許多後端管理腳本中使用了這個系統,這些腳本工作正常。基本上,首先做下面的事情:
ob_start();
echo strpad('', 1024, ' ');
ob_flush();
echo '<script>updateProgress(0.1);</script>';ob_flush();
/// do something else
echo '<script>updateProgress(0.2);</script>';ob_flush();
/// do something else...
echo '<script>updateProgress(0.3);</script>';ob_flush();
相關問題
- 1. 使本地html文件發送數據到服務器上的PHP腳本
- 2. 如何發送HttpPost請求到服務器的PHP腳本
- 3. 發送POST到一個PHP腳本的服務器
- 4. 配置郵件服務器發送郵件到PHP腳本
- 5. 從Netsuite腳本發送數據到PHP服務器
- 6. 發送HTML輸入到PHP Twilio腳本
- 7. 腳本未將輸入發佈到PHP服務器腳本。
- 8. 串行推送到服務器發送腳本
- 9. 2016將html發送到服務器
- 10. 從服務器觸發PHP腳本
- 11. Python腳本發送圖像到PHP
- 12. 從iOS發送JSON到PHP服務器上的PHP腳本時上傳文件
- 13. 如何使用PHP腳本從FTP服務器發送短信
- 14. 服務器發送PHP腳本是否必須輪詢?
- 15. WordPress的PHP服務器腳本發送電子郵件
- 16. 發送zip文件到php服務器
- 17. 發送字符串到php服務器
- 18. 發送XML到PHP服務器與Android
- 19. 將數據發送到PHP服務器
- 20. XMLHttpRequest發送XML到PHP服務器
- 21. Ruby Savon:如何讓請求文本發送到服務器?
- 22. 在表單中發送圖片到PHP服務器
- 23. 從.php發送圖像到存儲在服務器中的ajax
- 24. 如何將ImageView中的圖像發送到php服務器?
- 25. 通過PHP發送HTML表單數據到網絡服務器
- 26. HTML + PHP - 如何發送上傳的文件到服務器
- 27. 使用Html鏈接發送PHP GET數據到服務器
- 28. 發送UIImage和文本到服務器
- 29. 安卓:發送文件到服務器:PHP接收服務器
- 30. 從python腳本將數據發送到服務器socket.io
[flush()](http://nz.php.net/manual/en/function.flush.php)但我覺得它不可靠,我會去'野獸的性質' – 2012-12-11 19:28:13
如果你的html太大了,或者需要這麼長時間才能輸出你「需要」一個加載消息 - 你正在看錯誤的問題。你的意思是不同的?你是否在談論長時間運行的服務器進程的進度? – AD7six
這是什麼日誌文件... – Izkata