socket處理時有兩種超時 , 分爲鏈接超時 和 讀取/寫入數據超時php
1. stream_socket_client 函數中的超時時間是鏈接超時 , 默認是php.ini中的default_socket_timeout配置項異步
2. stream_set_timeout() 函數設置的是 讀取/寫入數據超時socket
3. default_socket_timeout配置項也控制file_get_contents的超時時間函數
PHP文檔中對該函數的解釋:資源
stream_socket_client ($remote_socket [,&$errno [,&$errstr [,$timeout = ini_get("default_socket_timeout") [,$flags = STREAM_CLIENT_CONNECT [ $context ]]]]] )rem
1.remote_socket 要鏈接到的套接字的地址。
對於Internet域套接字(AF_INET)(如TCP和UDP),remote_socket參數的目標部分應包含主機名或IP地址,後跟冒號和端口號。對於Unix域套接字,目標部分應指向文件系統上的套接字文件。文檔
注意:默認狀況下,流將以阻塞模式打開。您能夠使用stream_set_blocking($stream,1)將其切換到非阻塞模式。若是 mode 爲0,資源流將會被轉換爲非阻塞模式;若是是1,資源流將會被轉換爲阻塞模式。 該參數的設置將會影響到像 fgets() 和 fread() 這樣的函數從資源流裏讀取數據。 在非阻塞模式下,調用 fgets() 老是會當即返回;而在阻塞模式下,將會一直等到從資源流裏面獲取到數據才能返回。get
2.errno 若是鏈接失敗,將設置爲系統級錯誤號。
3.errstr 若是鏈接失敗,將設置爲系統級錯誤消息。
4.timeout connect()系統調用應該超時以前的秒數。 默認是php.ini中的default_socket_timeout配置項stream
注意:此參數僅在不進行異步鏈接嘗試時適用。
注意: 要設置經過套接字讀取/寫入數據的超時,請使用stream_set_timeout(),由於僅在鏈接套接字時才應用超時。 cli
5.flags 位掩碼字段,能夠設置爲鏈接標誌的任意組合。目前,鏈接標誌的選擇僅限於STREAM_CLIENT_CONNECT(默認值),STREAM_CLIENT_ASYNC_CONNECT和STREAM_CLIENT_PERSISTENT。 6.context 使用stream_context_create()建立的有效上下文資源。