導航:首頁 > 編程語言 > phpsleep原理

phpsleep原理

發布時間:2023-06-05 13:39:40

⑴ 關於php的sleep()函數導致的問題

但是同時兩次訪問index1.php,第二個需要等第一個完成之後再等20秒才能正常顯示,即第二個頁面需要等40s才能正常顯示

--------------------------------------
你是怎麼同時2次訪問index1.php的?

即第二個頁面需要等40s才能正常顯示
------------------------------------------
第二個頁面也是index1?

⑵ php sleep 會不會把伺服器卡死

sleep不佔用系統資源,它會把cpu的控制權交換給內核,內核會再schele到另一個進程。
這種簡單的事情,你寫個while (true) sleep(1)的程序然後top一下就能判斷的。

⑶ 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 discuz的定時任務是什麼原理怎麼實現的求高手解答

php中定時計劃任務的實現原理:
當 PHP 腳本正常地運行 NORMAL 狀態時,連接為有效。當遠程客戶端中斷連接時,ABORTED 狀態的標記將會被打開。遠程客戶端連接的中斷通常是由用戶點擊 STOP 按鈕導致的。當連接時間超過 PHP 的時限時,TIMEOUT 狀態的標記將被打開。

示例代碼:

<?php
ignore_user_abort(true);set_time_limit(0);
date_default_timezone_set('PRC'); // 切換到中國的時間

$run_time = strtotime('+1 day'); // 定時任務第一次執行的時間是明天的這個時候
$interval = 3600*12; // 每12個小時執行一次

if(!file_exists(dirname(__FILE__).'/cron-run')) exit(); // 在目錄下存放一個cron-run文件,如果這個文件不存在,說明已經在執行過程中了,該任務就不能再激活,執行第二次,否則這個文件被多次訪問的話,伺服器就要崩潰掉了

do {
if(!file_exists(dirname(__FILE__).'/cron-switch')) break; // 如果不存在cron-switch這個文件,就停止執行,這是一個開關的作用
$gmt_time = microtime(true); // 當前的運行時間,精確到0.0001秒
$loop = isset($loop) && $loop ? $loop : $run_time - $gmt_time; // 這里處理是為了確定還要等多久才開始第一次執行任務,$loop就是要等多久才執行的時間間隔
$loop = $loop > 0 ? $loop : 0;
if(!$loop) break; // 如果循環的間隔為零,則停止
sleep($loop);
// ...
// 執行某些代碼
// ...
@unlink(dirname(__FILE__).'/cron-run'); // 這里就是通過刪除cron-run來告訴程序,這個定時任務已經在執行過程中,不能再執行一個新的同樣的任務
$loop = $interval;
} while(true);

⑸ PHP中的sleep用法

<?php echo date('h:i:s') . "<br />"; //暫停 10 秒

sleep(10);//重新開始

echo date('h:i:s'); ?>

輸出:

15:00:08 15:00:18

⑹ php中sleep()函數會不會大量銷號系統內存或者CPU

會。
正常情況下php以最快速度執行完腳本,將執行結果傳給瀏覽器。你要考慮有很多用戶訪問你網站的情況,因為執行腳本的時候被sleep了,導致每個用戶瀏覽網頁的時候php都需要更長的時間去執行你的腳本,而腳本執行完畢之前內存是一直被php引擎佔用的。所以當訪問用戶多的時候,就會導致有很多php引擎的實例同時運行,佔用很多內存,但是這些php引擎卻受到腳本的指使而在那邊sleep(說得粗俗一點就是占著茅坑不拉屎)(正常情況下是執行完以後內存就釋放了)。就好像八行道的大馬路,如果只有一個司機車子停在中間然後睡覺,其他道路暫時還能通;但是如果有八輛車的司機並排停在路中間睡覺,這馬路就不要想暢通了
cpu的話……好像影響不大,最多就是操作系統在調度進程線程的時候要多檢查幾個而已,沒感覺。

⑺ php是單線程的,那麼sleep函數是如何實現自動結束掛起的

sleep函數會導致當前服務的進程睡眠掛起。注意是當前服務的進程。因為伺服器可以配置多個php進程同時提供解析服務。
另外PHP也可以使用pthread擴展實現多線程編程

閱讀全文

與phpsleep原理相關的資料

熱點內容
魔鬼訓練程序員 瀏覽:686
php上傳大文件失敗 瀏覽:602
sw伺服器指定埠怎麼填 瀏覽:189
java有哪些數組 瀏覽:984
程序員戴手錶影響工作嗎 瀏覽:235
游戲皇後解壓視頻 瀏覽:367
c語言怎麼打開文件編譯 瀏覽:436
手機上什麼app可以設計logo 瀏覽:800
pid演算法單片機 瀏覽:375
python數據精度 瀏覽:632
管什麼小女孩App 瀏覽:192
phppdf轉換成圖片 瀏覽:468
十八講pdf 瀏覽:619
mysql導入壓縮文件 瀏覽:22
usb控制單片機 瀏覽:906
你為什麼喜歡安卓手機 瀏覽:863
阿里雲伺服器購買和使用 瀏覽:389
單片機sp1 瀏覽:282
大學生玩貓咪解壓 瀏覽:794
php附近的演算法 瀏覽:346