利用PHP V5開發(fā)多任務(wù)應(yīng)用程序(5)_PHP教程
推薦:詳細(xì)解析 PHP 向 MySQL 發(fā)送數(shù)據(jù)過程下面的一段代碼是一個很簡單的 HTML 表單: <html> <body> <formaction=submitform.php3method=GET> 姓:<inputtype=textname=fir
您可以使用這項(xiàng)技術(shù)向任意個外部 Web 站點(diǎn)發(fā)出請求,確信您的程序會盡快收到所有結(jié)果,而無需等待其他請求。實(shí)際上,該技術(shù)將正確處理所有 TCP/IP 連接,而不只是 Web 端口 80 上的連接,因此您可以大體上管理 LDAP 檢索、SMTP 傳輸、SOAP 請求等。
但那不是全部。PHP V5 將管理 “流” 之類的各種連接,而不僅是簡單的套接字。PHP 的 Client URL library (CURL) 支持 HTTPS 證書、FTP 上傳、cookie 等。(CURL 允許 PHP 應(yīng)用程序使用各種協(xié)議連接至服務(wù)器)。由于 CURL 將提供流接口,因此從程序的角度來看,連接是透明的。下一個部分將展示 stream_select 如何多路傳輸本地計(jì)算。
對于 stream_select 還有幾點(diǎn)需要注意。它還在進(jìn)行文檔整理,因?yàn)榧词棺钚碌?PHP 書籍都沒有涉列它�?稍� Web 上獲得的幾個代碼示例完全不能工作或者讓人產(chǎn)生混淆。stream_select 的第二個和第三個參數(shù)用于管理與清單 1 的 read 通道相對應(yīng)的 write 和 exception 通道,應(yīng)當(dāng)始終為 null。除了少數(shù)例外情況,在可寫通道或異常通道中選擇這兩個參數(shù)是錯誤的。除非您有經(jīng)驗(yàn),否則請堅(jiān)持可讀選擇。
此外,至少在 PHP V5.1.2 之前,stream_select 還明顯存在錯誤。最重要的是,不能信任函數(shù)的返回值。雖然我尚未調(diào)試過實(shí)現(xiàn),但是經(jīng)驗(yàn)告訴我,可以安全地測試清單 1 中的 count($read),但是測試 stream_select 本身的返回值并不 安全(盡管有官方文檔)。
本地 PHP 并發(fā)
示例及上面的大部分討論主要討論了如何同時管理若干個遠(yuǎn)程資源并接收到達(dá)的結(jié)果,而不是按照最初請求的順序等待處理各個請求。這肯定是 PHP 并發(fā)的重要應(yīng)用。實(shí)際應(yīng)用程序的速度有時候可以提高 10 倍或更多。
如果出現(xiàn)性能衰退怎么辦?有沒有一種方法可以提升受限于本地處理的 PHP 結(jié)果的速度?方法有多種。要說有什么不同的話,這些方法不如清單 1 中的面向套接字的方法有名。造成這種情況的原因有很多,包括:
分享:PHP實(shí)現(xiàn)靜態(tài)發(fā)布的方法淺談如今很多網(wǎng)站都是靜態(tài)發(fā)布的,PHP當(dāng)然也可以方便的實(shí)現(xiàn)靜態(tài)發(fā)布嘍,具體的實(shí)現(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地址的實(shí)現(xiàn)代碼
- php5.5新數(shù)組函數(shù)array_column使用
- PHP preg_match的匹配多國語言的技巧
- php 中序列化和json使用介紹
- php采集文章中的圖片獲取替換到本地
- 相關(guān)鏈接:
- 教程說明:
PHP教程-利用PHP V5開發(fā)多任務(wù)應(yīng)用程序(5)
。