在我的網站(使用drupal運行)中,ob_flush
函數需要很長時間(10-100秒)才能執行。我如何找出原因?什麼會導致這麼長時間? ob_flush需要很長時間才能執行
10
A
回答
0
使用
<?ob_start();?>
在頁面的開頭和
<?ob_flush();?>
在頁面的結束,來解決這個問題。
0
SET
output_buffering = Off
在php.ini
2
試試這個:
ob_start();
//Your code to generate the output
$result = ob_get_contents(); //save the contents of output buffer to a string
ob_end_clean();
echo $result;
它運行快給我。
0
[您可能想用Drupal標記您的問題,因爲這可能是Drupal問題。具體而言,我懷疑當你刷新緩衝區時,你正在寫入一個外部緩衝區,這會觸發大量鉤子來過濾剛剛寫入的數據。]
我懷疑你的問題是嵌套緩衝區。 Drupal真的很喜歡緩衝區,並且緩衝了所有的地方。檢查結果:
echo "<pre>\nBuffering level: ";
. ob_get_level() .
. "\nBuffer status:\n"
. var_dump(ob_get_status(TRUE))
. "\n</pre>";
如果你有嵌套的緩衝區,然後我懷疑使用ob_flush()會爲你做什麼:它只是你的附加內部緩衝的內容寫入緩存的下一個最外層。
嵌套的緩衝區可以來自Drupal本身(上面會顯示),也可以來自zlib-output-compression和output_buffering的設置(試着找出它們是否改變了什麼)。
如果緩衝區沒有嵌套,和上面的設置沒有幫助,那麼你可能還需要有分裂的操作成片,並運行剖析,看看哪些部分佔用的時間:
$data = ob_get_contents(); // Return the contents of the output buffer.
ob_clean(); // Clean (erase) the output buffer.
ob_end(); // Close the buffer.
echo($data); // Output our data - only works if there's no outer buffer!
ob_start(); // Start our buffer again.
然而,問題變成了「你想完成什麼?」你認爲ob_flush()在這裏做什麼?因爲如果答案是「我想把我迄今爲止所做的一切都推到瀏覽器中」......那麼我擔心ob_flush()並不是正確的方法。
相關問題
- 1. 查詢連接表需要很長時間才能執行
- 2. 簡單查詢需要很長時間才能執行
- 3. rand.Prime(rand.Reader,3072)需要很長時間才能執行
- 4. 賽格需要很長時間才能執行
- 5. Sendmail()需要很長時間才能執行
- 6. 輸入Java代碼需要很長時間才能執行
- 7. Java Android方法需要很長時間才能執行?
- 8. 編譯後需要很長時間才能執行代碼塊
- 9. mysql光標需要很長時間才能執行
- 10. HQL查詢需要很長時間才能執行
- 11. Mysql查詢需要很長時間才能執行
- 12. 過程需要很長時間才能執行查詢
- 13. VBA代碼需要很長時間才能執行
- 14. LINQPad需要很長時間才能執行?
- 15. Spark程序需要很長時間才能完成執行
- 16. CakePHP 2.2/AclExtras/aco_sync需要很長時間才能執行
- 17. PyCurl需要很長時間才能執行
- 18. PHP Imagick()需要很長時間才能執行
- 19. tablediff工具需要很長時間才能執行
- 20. sp_reset_connection需要很長時間才能運行
- 21. Web服務需要很長時間才能第一次運行
- 22. Ravendb Savechanges();需要很長時間才能運行?
- 23. Oozie的SSH行動需要很長時間才能完成
- 24. 需要很長時間才能運行的Javascript表單驗證
- 25. MPI_Init()需要很長時間才能運行
- 26. IIS需要很長時間才能運行
- 27. Itertools需要很長時間才能運行
- 28. 需要很長時間才能運行的python腳本
- 29. 此存儲過程需要很長時間才能運行?
- 30. Crystal Report Viewer需要很長時間才能運行
是什麼讓你覺得這個功能凍結你的應用程序? – ualinker
@ualinker請看我剛剛上傳的圖片 – user16948
你能否也請將代碼粘貼到'ob_start()'和'ob_flush()'上下文中? – ualinker