You've already forked qlg.tsgz.moe
							
							
		
			
				
	
	
		
			46 lines
		
	
	
		
			966 B
		
	
	
	
		
			PHP
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			46 lines
		
	
	
		
			966 B
		
	
	
	
		
			PHP
		
	
	
		
			Executable File
		
	
	
	
	
| <?php
 | |
| if (empty($argv[1]))
 | |
| {
 | |
|     $server_ip = '127.0.0.1';
 | |
| }
 | |
| else
 | |
| {
 | |
|     $server_ip = $argv[1];
 | |
| }
 | |
| $cli = new swoole_client(SWOOLE_TCP);
 | |
| $start_ms = microtime(true);
 | |
| $cli->connect($server_ip, 9501, 5);
 | |
| $filesize = intval($cli->recv());
 | |
| if ($filesize == 0)
 | |
| {
 | |
|     die("get file size failed.\n");
 | |
| }
 | |
| echo "file_size = $filesize\n";
 | |
| $content = '';
 | |
| $cli->send("get file");
 | |
| 
 | |
| $use_waitall = false;
 | |
| 
 | |
| if ($use_waitall)
 | |
| {
 | |
|     //waitall,需要一次性分配内存,适合小一点的文件
 | |
|     $content = $cli->recv($filesize, true);
 | |
| }
 | |
| else
 | |
| {
 | |
|     //循环接收,适合大型文件
 | |
|     while(1)
 | |
|     {
 | |
|         //超大文件接收,这里需要改成分段写磁盘
 | |
|         $content .= $cli->recv();
 | |
|         if (strlen($content) == $filesize)
 | |
|         {
 | |
|             break;
 | |
|         }
 | |
|     }
 | |
| }
 | |
| file_put_contents(__DIR__."/recv_file_".time().".jpg", $content);
 | |
| echo "recv ".strlen($content)." byte data\n";
 | |
| echo "used ".((microtime(true) - $start_ms)*1000)."ms\n";
 | |
| $cli->close();
 |