一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - PHP教程 - PHP中Socket連接及讀寫數據超時問題分析

PHP中Socket連接及讀寫數據超時問題分析

2021-02-06 16:19miky PHP教程

這篇文章主要介紹了PHP中Socket連接及讀寫數據超時問題,分析了Socket連接的相關設置與使用技巧,需要的朋友可以參考下

本文實例講述了PHPSocket連接讀寫數據超時問題。分享給大家供大家參考,具體如下:

雖然PHP中對fsockopen()方法有連接socket的超時參數,但是沒有類似C中的連接成功后對數據的讀寫超時參數設置。沒關系,PHP中對stream提供了一系列的方法以防止超時

?
1
stream_set_blocking( $fp , false )

設置數據流為阻塞模式,以防止數據沒讀完就退出

如果模式為 false, 給定的 socket 描述符將切換到非塊模式, 如果為 true, 則切換到塊模式. 這個效果類似于 fgets() 從 socket 讀的情況. 在非塊模式 fgets() 將會立即返回,而在塊模式將等待數據滿足要求.

?
1
stream_set_timeout( $fp , 10 )

設置超時,應該在成功建立連接之后立即加上此句,后面的參數單位為秒

?
1
stream_get_meta_data( $fp )

從封裝協議文件指針中取得報頭/元數據,返回的是一個數組,其中格式為:

?
1
2
3
4
5
6
7
8
9
10
Array
(
  [stream_type] => tcp_socket
  [mode] => r+
  [unread_bytes] => 0
  [seekable] =>
  [timed_out] =>
  [blocked] => 1
  [eof] =>
)

其中索引timed_out為超時信息,超時則為true,未超時則為false,我們可以籍由此來判斷socket是否超時,需要注意的是此句應該加在每次需要等待的語句之后,比如fwrite(),fread(),并且每讀一次,都要判斷一次是否超時,而對于一個連接只需一次超時設置stream_set_timeout( $fp , 10 )就可以了

代碼:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
$fp = @fsockopen( $ip , $port, $errNo , $errstr, 30 );
if( !$fp )
{
  return false;
}
else
{
  stream_set_timeout( $fp , 3 ) ;
  //發送數據
  fwrite( $fp , $packet ) ;
  $status = stream_get_meta_data( $fp ) ;
  //發送數據超時
  if( $status['timed_out'] )
  {
    echo "Write time out" ;
    fclose( $fp );
    return false;
  }
  //讀取數據
  $buf = fread( $fp , 16 ) ;
  $status = stream_get_meta_data( $fp ) ;
  //讀取數據超時
  if( $status['timed_out'] )
  {
    echo "Read time out" ;
    fclose( $fp );
    return false;
  }
}

希望本文所述對大家PHP程序設計有所幫助。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 成人欧美1314www色视频 | 3d欧美人与禽交 | 免费看日本 | 好大用力深一点视频 | 草莓视频看污 | 欧美一级高清片免费一级 | 我把寡妇日出水好爽 | 色综合伊人色综合网亚洲欧洲 | 8天堂资源在线官网 | 视频在线观看入口一二三2021 | 欧美在线一二三区 | 色婷丁香 | 欧美vpswindowssex 欧美va在线高清 | 草莓绿巨人香蕉茄子芭乐 | 极品一区| 秒播影视 午夜福利毛片 | 女人张开腿让男人做爽爽 | jux539原千岁在线播放 | 亚洲一级特黄 | 大妹子最新视频在线观看 | 五月天黄网 | 国产情侣视频观看 | 9总探花新品牛仔背带裤 | 8天堂资源在线官网 | 国产精品高清视亚洲一区二区 | 国产高清路线一路线二2022 | 星球大战成人h无删减版 | 鸭子玩富婆流白浆视频 | 成年人视频免费在线播放 | 欧美日韩一区二区中文字幕视频 | 婷婷色网 | 国内精品免费 | 高清不卡日本v在线二区 | 男人叼女人的痛爽视频免费 | 日本女人www | chinesespanking网站 | 亚洲第五页 | 免费在线视频观看 | 欧美日韩国产一区二区三区伦 | 欧美国产日产精品免费视频 | 大学生特黄特色大片免费播放 |