1. 有沒有php的魔術函數 __sleep 和 __wakeup的例子
魔術函數 __sleep 和 __wakeup
serialize() 檢查類中是否有魔術名稱 __sleep 的函數。如果這樣,該函數將在任何序列化之前運行。它可以清除對象並應該返回一個包含有該對象中應被序列化的所有變數名的數組。
使用 __sleep 的目的是關閉對象可能具有的任何資料庫連接,提交等待中的數據或進行類似的清除任務。此外,如果有非常大的對象而並不需要完全儲存下來時此函數也很有用。
相反地,unserialize() 檢查具有魔術名稱 __wakeup 的函數的存在。如果存在,此函數可以重建對象可能具有的任何資源。
使用 __wakeup 的目的是重建在序列化中可能丟失的任何資料庫連接以及處理其它重新初始化的任務。
Following up to rkelly at NO dot whitley dot unimelb dot SPAM dot e dot au's note regarding __sleep()
__sleep expects you to return an array of object variables that are allowed to be serialized.
Not returning this array -will- result in your object not being serialized, and -will- cause headaches. If you need __sleep() to do cleanup:
1) do your cleanup
2) return the object variables in an array using the code from the comment from php at sharpdreams dot com (below)
search phrases to help people find this info:
php object will not (does not) work in session
session object will not work in subsequent page views
my object won't show up on next page
2. php中sleep()函數會不會大量銷號系統內存或者CPU
會。
正常情況下php以最快速度執行完腳本,將執行結果傳給瀏覽器。你要考慮有很多用戶訪問你網站的情況,因為執行腳本的時候被sleep了,導致每個用戶瀏覽網頁的時候php都需要更長的時間去執行你的腳本,而腳本執行完畢之前內存是一直被php引擎佔用的。所以當訪問用戶多的時候,就會導致有很多php引擎的實例同時運行,佔用很多內存,但是這些php引擎卻受到腳本的指使而在那邊sleep(說得粗俗一點就是占著茅坑不拉屎)(正常情況下是執行完以後內存就釋放了)。就好像八行道的大馬路,如果只有一個司機車子停在中間然後睡覺,其他道路暫時還能通;但是如果有八輛車的司機並排停在路中間睡覺,這馬路就不要想暢通了
cpu的話……好像影響不大,最多就是操作系統在調度進程線程的時候要多檢查幾個而已,沒感覺。
3. 關於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
4. 關於PHP的sleep()函數導致的問題
但是同時兩次訪問index1.php,第二個需要等第一個完成之後再等20秒才能正常顯示,即第二個頁面需要等40s才能正常顯示
--------------------------------------
你是怎麼同時2次訪問index1.php的?
即第二個頁面需要等40s才能正常顯示
------------------------------------------
第二個頁面也是index1?