利用PHP V5開發(fā)多任務(wù)應(yīng)用程序(4)_PHP教程
推薦:詳細(xì)解析 PHP 向 MySQL 發(fā)送數(shù)據(jù)過程下面的一段代碼是一個很簡單的 HTML 表單: <html> <body> <formaction=submitform.php3method=GET> 姓:<inputtype=textname=fir
雖然清單 3 的特殊實現(xiàn)特定于 UNIX?,但是本文中幾乎所有實現(xiàn)都將很好地應(yīng)用于 Windows?(尤其是 Windows 98 以后的版本)或 PHP 的 UNIX 安裝。特別地,清單 1 可以托管在任意一個操作系統(tǒng)中。因此,Linux? 和 Mac OS X 都是 UNIX 變體,因此這里所有的代碼都可以在兩者的任意一種中運(yùn)行。
按照以下順序向延遲服務(wù)器發(fā)出請求。
清單 4. 進(jìn)程啟動順序
| delay=15 delay=12 delay= 9 delay= 6 delay= 3 |
stream_select 的作用是盡可能快速地接收結(jié)果。在這種情況下,它執(zhí)行的順序與發(fā)出結(jié)果的順序剛好相反。3 秒后,第一個頁面已經(jīng)準(zhǔn)備好讀取。程序的這一部分也符合常規(guī) PHP —— 在本例中,使用 fread。就像在其他 PHP 程序一樣,讀取可以很好地通過 fgets 完成。
處理將以同樣的方法繼續(xù)。程序?qū)⒃?stream_select 停止,直至數(shù)據(jù)就緒。重要的一點是,只要任何 連接具有數(shù)據(jù),不管順序怎樣,程序都將開始讀取。這是程序進(jìn)行多任務(wù)處理或并發(fā)處理來自多個請求的結(jié)果的方法。
注意,這沒有對主機(jī) CPU 造成任何負(fù)擔(dān)。經(jīng)常會遇到這樣一些連網(wǎng)程序,以 CPU 使用率急速上升至 100% 的方式在 while 中使用 fread。那種情況不會出現(xiàn)在這里,因為 stream_select 擁有支持立即響應(yīng)所需的屬性(只要有任何讀取信息),但是它將在各讀取操作間隙的等待時間內(nèi)產(chǎn)生可忽略的 CPU 負(fù)載。
必備的 stream_select() 知識
諸如此類的基于事件的編程并不是最基本的。雖然清單 1 被簡化到只包含最基本要素,但是涉及作為多任務(wù)應(yīng)用程序必要元素的回調(diào)或協(xié)調(diào)的任何編碼,比簡單的程序順序更讓人覺得陌生。在這種情況下,大多數(shù)挑戰(zhàn)集中在 $read 數(shù)組上。注意,它是一個引用;stream_select 將通過改變 $read 的內(nèi)容返回重要信息。就像指針是 C 的最大絆腳石一樣,引用似乎是 PHP 中最讓程序員感到棘手的一部分。
分享:PHP實現(xiàn)靜態(tài)發(fā)布的方法淺談如今很多網(wǎng)站都是靜態(tài)發(fā)布的,PHP當(dāng)然也可以方便的實現(xiàn)靜態(tài)發(fā)布嘍,具體的實現(xiàn)方法很多,下面我就說說我會的兩種方法。 方法一:ob_get_contents() 這是一種很方便的方法,也是很常用的方法
- PHPNOW安裝Memcached擴(kuò)展方法詳解
- php記錄頁面代碼執(zhí)行時間
- PHP中獎概率的抽獎算法程序代碼
- apache設(shè)置靜態(tài)文件緩存方法介紹
- php對圖像的各種處理函數(shù)代碼小結(jié)
- PHP 關(guān)于訪問控制的和運(yùn)算符優(yōu)先級介紹
- 關(guān)于PHP語言構(gòu)造器介紹
- php/js獲取客戶端mac地址的實現(xiàn)代碼
- php5.5新數(shù)組函數(shù)array_column使用
- PHP preg_match的匹配多國語言的技巧
- php 中序列化和json使用介紹
- php采集文章中的圖片獲取替換到本地
- 相關(guān)鏈接:
- 教程說明:
PHP教程-利用PHP V5開發(fā)多任務(wù)應(yīng)用程序(4)
。