1--TEST-- 2Check for eio_sendfile function work with sockets 3--SKIPIF-- 4<?php 5if (!extension_loaded('sockets')) { 6 die('SKIP The sockets extension is not loaded'); 7} 8?> 9--FILE-- 10<?php 11ini_set('display_errors', 'On'); 12ini_set('log_errors', 'Off'); 13 14function my_cb($socket, $result) { 15 var_dump($socket); 16 var_dump($result); 17 18 if ($result <= 0) { 19 return; 20 } 21 22 $data = socket_read($socket, 10, PHP_BINARY_READ); 23 var_dump($data); 24} 25 26$tmp_file = sprintf("/tmp/tmp_%s", uniqid()); 27$fp = fopen($tmp_file, 'w+'); 28$data = "ABCdef123"; 29var_dump($data); 30fwrite($fp, $data); 31 32$sock_path = sprintf("/tmp/%s.sock", uniqid()); 33if (file_exists($sock_path)) 34 die('Temporary socket already exists.'); 35 36/* Setup socket */ 37$server = socket_create(AF_UNIX, SOCK_STREAM, 0); 38if (!$server) { 39 die('Unable to create AF_UNIX socket [server]'); 40} 41if (!socket_bind($server, $sock_path)) { 42 die("Unable to bind to $sock_path"); 43} 44if (!socket_listen($server, 2)) { 45 die('Unable to listen on socket'); 46} 47 48/* Connect to socket */ 49$client = socket_create(AF_UNIX, SOCK_STREAM, 0); 50if (!$client) { 51 die('Unable to create AF_UNIX socket [client]'); 52} 53if (!socket_connect($client, $sock_path)) { 54 die('Unable to connect to server socket'); 55} 56 57/* Accept socket connection */ 58$socket = socket_accept($server); 59if (!$socket) { 60 die('Unable to accept connection'); 61} 62 63 64eio_sendfile($client, $fp, 0, 8, 0, 'my_cb', $socket); 65eio_event_loop(); 66 67fclose($fp); 68socket_close($client); 69socket_close($socket); 70socket_close($server); 71@unlink($sock_path); 72@unlink($tmp_file); 73?> 74--EXPECT-- 75string(9) "ABCdef123" 76resource(8) of type (Socket) 77int(8) 78string(8) "ABCdef12" 79