本文目錄一覽:
PHP當中的 sleep()函數問題
同學,你要先理解php是在服務器端執行的
你的這個結果,卻是被客戶端瀏覽器解析的
所以,服務器執行了 輸出1 睡眠3 輸出2 用時3秒
然後返回了最終的結果
而,同時,瀏覽器是不能用html來動態顯示內容的
你需要使用ajax
處理邏輯是:
ajax 控制js向服務器發報,服務器返回顯示時間的頁面,頁面用js動態加入div中
這個過程用js控制,每3秒自調用一次
即是在js function中添加setTimeout( “方法名() “, 3000);
當然,還有另外一個方法,上面的方法能獲得的是服務器端的時間,下面這個則是客戶端的時間,處理邏輯如下:
和上個方法一樣,寫一個js的3秒間隔自調用函數,然後該函數會改變某個div的值,值顯示為當前時間。
其實還有個方法,使用js每隔3秒來刷新當前頁面。
但無論哪種方法 都用不到sleep
php中sleep()函數會不會大量銷號系統內存或者CPU
會。
正常情況下php以最快速度執行完腳本,將執行結果傳給瀏覽器。你要考慮有很多用戶訪問你網站的情況,因為執行腳本的時候被sleep了,導致每個用戶瀏覽網頁的時候php都需要更長的時間去執行你的腳本,而腳本執行完畢之前內存是一直被php引擎佔用的。所以當訪問用戶多的時候,就會導致有很多php引擎的實例同時運行,佔用很多內存,但是這些php引擎卻受到腳本的指使而在那邊sleep(說得粗俗一點就是佔著茅坑不拉屎)(正常情況下是執行完以後內存就釋放了)。就好像八行道的大馬路,如果只有一個司機車子停在中間然後睡覺,其他道路暫時還能通;但是如果有八輛車的司機並排停在路中間睡覺,這馬路就不要想暢通了
cpu的話……好像影響不大,最多就是操作系統在調度進程線程的時候要多檢查幾個而已,沒感覺。
php sleep 會不會把服務器卡死
sleep不佔用系統資源,它會把cpu的控制權交換給內核,內核會再schedule到另一個進程。
這種簡單的事情,你寫個while (true) sleep(1)的程序然後top一下就能判斷的。
關於php中sleep函數
定義和用法:
sleep() 函數延遲代碼執行若干秒。
語法:sleep(seconds)
參數:seconds 描述:必需。以秒計的暫停時間。
返回值:
若成功,返回 0,否則返回 false。
錯誤/異常:
如果指定的描述 seconds 是負數,該函數將生成一個 E_WARNING。
例子:
?php
echo date(‘h:i:s’) . “br /”;
//暫停 10 秒
sleep(10);
//重新開始
echo date(‘h:i:s’);
?
輸出:
12:00:08
12:00:18
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/236665.html