1.7.5 swoole_client支持sendfile接口

1.7.5增加了swoole_client->sendfile接口,在客户端中也可以直接发送一个文件到服务器。使用方法

$client = new swoole_client(SWOOLE_SOCK_TCP, SWOOLE_SOCK_SYNC); //同步阻塞
if (!$client->connect('127.0.0.1', 9501, -1))
{
    exit("connect failed. Error: {$client->errCode}\n");
}
if ($client->sendfile(__DIR__.'/test.txt') === false)
{
    echo "send failed. Error: {$client->errCode}\n";
    break;
}
$data = $client->recv(7000);
if ($data === false)
{
    echo "recv failed. Error: {$client->errCode}\n";
    break;
}
var_dump($data);
$client->close();

sendfile只需要传入文件名即可发送到服务器。当文件不存在时会返回false。



  • 郭永荣

    $data = $client->recv(7000); if ($data === false) { echo "recv failed. Error: {$client->errCode}\n"; break; } var_dump($data); $data是否是 DIR.'/test.txt' 这个文件的内容??? 这一段没有看明白.

  • 飞鱼

    应该是读取返回的前7000个字节

  • 蝶恋花

    if (!$client->connect('127.0.0.1', 9501, -1)) { exit("connect failed. Error: {$client->errCode}\n"); },前面的介绍里面说进来不要在php的代码里面使用exit(),die,不过例子里面经常用诶

  • 蝶恋花

    好棒,recive可以接收的已经处理过了。完全是明文,不是二进制字节了

  • qhc39

    我的理解:客户端的使用一般应该是不会出现在服务端中的,就是说执行环境应该是在cgi,cli,fpm,mod-php中,这时候用exit/die是没问题的。