File tree Expand file tree Collapse file tree 1 file changed +21
-7
lines changed Expand file tree Collapse file tree 1 file changed +21
-7
lines changed Original file line number Diff line number Diff line change 88 $ server_ip = $ argv [1 ];
99}
1010$ cli = new swoole_client (SWOOLE_TCP );
11+ $ start_ms = microtime (true );
1112$ cli ->connect ($ server_ip , 9501 , 5 );
1213$ filesize = intval ($ cli ->recv ());
1314if ($ filesize == 0 )
1718echo "file_size = $ filesize \n" ;
1819$ content = '' ;
1920$ cli ->send ("get file " );
20- while (1 )
21+
22+ $ use_waitall = false ;
23+
24+ if ($ use_waitall )
2125{
22- $ content .= $ cli ->recv ();
23- echo strlen ($ content )."\n" ;
24- if (strlen ($ content ) == $ filesize )
26+ //waitall,需要一次性分配内存,适合小一点的文件
27+ $ content = $ cli ->recv ($ filesize , true );
28+ }
29+ else
30+ {
31+ //循环接收,适合大型文件
32+ while (1 )
2533 {
26- $ i = time ();
27- file_put_contents (__DIR__ ."/recv_file_ {$ i }.jpg " , $ content );
28- break ;
34+ //超大文件接收,这里需要改成分段写磁盘
35+ $ content .= $ cli ->recv ();
36+ if (strlen ($ content ) == $ filesize )
37+ {
38+ break ;
39+ }
2940 }
3041}
42+ file_put_contents (__DIR__ ."/recv_file_ " .time ().".jpg " , $ content );
43+ echo "recv " .strlen ($ content )." byte data \n" ;
44+ echo "used " .((microtime (true ) - $ start_ms )*1000 )."ms \n" ;
3145$ cli ->close ();
You can’t perform that action at this time.
0 commit comments