swoole 第18章 异步IO swoole 第18章 异步IO

2022-06-15

一、异步文件读取

1、参数说明

swoole_async_readfile(string $filename, mixed $callback);
Swoole\Async::readFile(string $filename, mixed $callback);

2、例子

swoole_async_readfile(__DIR__."/1.txt", function($filename, $content){
    echo "$filename $content\n";
});

二、异步文件写入

1、参数说明

swoole_async_writefile(string $filename, string $fileContent, callback $callback=null, int $flags=0)
  • 参数1:文件的名称,必须有可写权限

  • 参数2:要写入到文件的内容,最大可写入 4M

  • 参数3:写入后的回调函数,可选

  • 参数4:写入的选项,可以使用 FILE_APPEND 表示追加到文件末尾

2、例子

$content = "hello world";
swoole_async_writefile("2.txt", $content, function($filname){
    echo $filname;
}, 0);

三、异步事件

1、参数说明

bool swoole_event_add(int $sock, mixed $read_callback, mixed $write_callback=null, int $flag=null);

2、例子

$fp = stream_socket_client("tcp://www.qq.com:80", $errNo, $errStr, 30);
fwrite($fp, "GET / HTTP/1.1\r\nHost:www.qq.com\r\n\r\n");
swoole_event_add($fp, function($fp){
    $resp = fread($fp, 8192);
    var_dump($resp);
    swoole_event_del($fp);
    fclose($fp);
});
echo "这个先执行完成\n";

四、异步 mysql

1、参数说明

swoole_mysql
connet
on
escape
query

2、例子

 $db = new swoole_mysql();
$config = [
    "host" => "127.0.0.1",
    "user" => "root",
    "password" => "root",
    "database" => "mysql",
    "charset" => "utf8",
];
$db->connect($config, function ($db, $r){
    if($r === false){
        var_dump($db->connect_errno, $db->connect_error);
        die("连接失败");
    }
    $sql = "show tables";
    $db->query($sql, function (swoole_mysql $db, $r){
        if($r === false){
            var_dump($db->error);
            die("操作失败");
        }else{
            var_dump("操作成功");
            var_dump($db->affected_rows, $db->insert_id);
        }
        var_dump($r);
        $db->close();
    });
});

打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,你说多少就多少

打开微信扫一扫,即可进行扫码打赏哦

阅读 644