導航:首頁 > 編程語言 > 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原理相關的資料

熱點內容
命令窗口輸入後不滾動 瀏覽:638
C面向切面編程aop例子 瀏覽:368
windowsrar命令 瀏覽:379
單片機編程語言有哪些 瀏覽:441
蘋果安卓系統筆記本怎麼設置密碼 瀏覽:982
只能加密不能解密有什麼用 瀏覽:239
怎麼製造app 瀏覽:121
電腦解壓死機了怎麼辦 瀏覽:607
歐洲伺服器雲進銷存 瀏覽:192
程序員python和java 瀏覽:949
文件夾怎麼插入幻燈 瀏覽:282
帶孩子到崩潰怎麼解壓 瀏覽:63
戰地一被踢出伺服器會顯示什麼 瀏覽:837
怎麼看手機上所有的app 瀏覽:365
網路拚命令怎麼拼 瀏覽:836
產品經理和程序員優先選哪個 瀏覽:393
樸素的app應用怎麼推廣 瀏覽:586
怎麼查校園卡app專屬流量 瀏覽:437
少兒編程教育培訓視頻 瀏覽:562
華為平板如何裝兩個一樣的app 瀏覽:728