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

熱點內容
十大香港全漏電影 瀏覽:335
小虎還鄉裡面的驢叫什麼 瀏覽:499
誰有小電影網址啊 瀏覽:376
香港滿清十大酷刑一共有幾部電影 瀏覽:709
icloud發件伺服器埠是什麼 瀏覽:572
天殘腳電影 瀏覽:335
十部必看剿匪電影 瀏覽:692
免費台灣理論 瀏覽:132
大地影院明天有什麼電影 瀏覽:483
金石學pdf 瀏覽:696
河南天工集團廣訊通伺服器地址 瀏覽:420
cad制圖常用命令 瀏覽:857
主角叫楚風重生都市的小說 瀏覽:212
單片機jnb指令 瀏覽:1002
可以觀看vip電視劇的網站 瀏覽:244
如何編譯pfx文件 瀏覽:139
兩個女的吃大便 瀏覽:596
枚舉調用java 瀏覽:410
閃閃發光大團結下載 瀏覽:255
主角叫葉天免費閱讀 瀏覽:908