1--TEST-- 2swoole_server: sendfile with SSL 3--SKIPIF-- 4<?php 5require __DIR__ . '/../include/skipif.inc'; 6skip_if_extension_not_exist('sockets'); 7?> 8--FILE-- 9<?php 10require __DIR__ . '/../include/bootstrap.php'; 11 12$pm = new SwooleTest\ProcessManager; 13 14$pm->parentFunc = function ($pid) use ($pm) { 15 $client = new swoole_client(SWOOLE_SOCK_TCP | SWOOLE_SSL, SWOOLE_SOCK_SYNC); //同步阻塞 16 if (!$client->connect('127.0.0.1', $pm->getFreePort())) 17 { 18 exit("connect failed\n"); 19 } 20 21 $socket = $client->getSocket(); 22 socket_set_option($socket, SOL_SOCKET, SO_SNDBUF, 65536); 23 socket_set_option($socket, SOL_SOCKET, SO_RCVBUF, 65536); 24 25 $N = filesize(TEST_IMAGE); 26 $bytes = 0; 27 $data = ''; 28 while ($bytes < $N) 29 { 30 $n = rand(8192, 65536); 31 $r = $client->recv($n); 32 if (!$r) 33 { 34 break; 35 } 36 usleep(10000); 37 $bytes += strlen($r); 38 $data .= $r; 39 } 40 Assert::same($bytes, $N); 41 Assert::same(md5_file(TEST_IMAGE), md5($data)); 42 $pm->kill(); 43}; 44 45$pm->childFunc = function () use ($pm) { 46 $serv = new swoole_server('127.0.0.1', $pm->getFreePort(), SWOOLE_BASE, SWOOLE_SOCK_TCP | SWOOLE_SSL); 47 $serv->set([ 48 //'log_file' => '/dev/null', 49 'kernel_socket_send_buffer_size' => 65536, 50 'ssl_cert_file' => SSL_FILE_DIR.'/server.crt', 51 'ssl_key_file' => SSL_FILE_DIR.'/server.key', 52 ]); 53 $serv->on("workerStart", function ($serv) use ($pm) { 54 $pm->wakeup(); 55 }); 56 $serv->on('connect', function (swoole_server $serv, $fd) { 57 Assert::true($serv->sendfile($fd, TEST_IMAGE)); 58 }); 59 $serv->on('receive', function ($serv, $fd, $reactor_id, $data) { 60 61 }); 62 $serv->start(); 63}; 64 65$pm->childFirst(); 66$pm->run(); 67?> 68--EXPECT-- 69