学习 Swoole(一)

Swoole:面向生产环境的 PHP 异步网络通信引擎。
使 PHP 开发人员可以编写高性能的异步并发 TCP、UDP、Unix Socket、HTTP,WebSocket 服务。Swoole 可以广泛应用于互联网、移动通信、企业软件、云计算、网络游戏、物联网(IOT)、车联网、智能家居等领域。 使用 PHP + Swoole 作为网络通信框架,可以使企业 IT 研发团队的效率大大提升,更加专注于开发创新产品。

简介

  • Swoole 使用纯 C 语言编写,提供了 PHP 语言的异步多线程服务器,异步 TCP/UDP 网络客户端,异步 MySQL,异步 Redis,数据库连接池,AsyncTask,消息队列,毫秒定时器,异步文件读写,异步 DNS 查询。 Swoole 内置了 Http/WebSocket 服务器端/客户端、Http 2.0 服务器端。
  • 除了异步 IO 的支持之外,Swoole 为 PHP 多进程的模式设计了多个并发数据结构和 IPC 通信机制,可以大大简化多进程并发编程的工作。其中包括了并发原子计数器,并发 HashTable,Channel,Lock,进程间通信IPC等丰富的功能特性。
  • Swoole 2.0 支持了类似 Go 语言的协程,可以使用完全同步的代码实现异步程序。PHP 代码无需额外增加任何关键词,底层自动进行协程调度,实现异步。

实践第一个小例子(创建一个 TCP 服务器)

<?php

//  创建对象,监听本地 1215 端口
$serve = new swoole_server('127.0.0.1', 1215);

//  监听连接进入事件
$serve->on('connect', function ($serve, $mark) {  
    echo 'Hello customer' . PHP_EOL;
});

//  监听数据接收事件
$serve->on('receive', function ($serve, $mark, $from_id, $data) {
    $serve->send($mark, 'Server: '.$data);
});

//  监听关闭
$serve->on('close', function ($serve, $mark) {
    echo 'Client: Close' . PHP_EOL;
});

$serve->start();
  1. 创建一个 PHP 文件,写入上面的代码。

    ~ touch swoole-tcp.php
    ~ vim swoole-tcp.php
  2. 把小案例跑起来。

    ~ php swoole-tcp.php
    ...
    ...
  3. 测试咱们的小案例。

    ~ telnet 127.0.0.1 1215
    hello world
    ...
    ...
    telnet> quit

    运行一些简单的命令,尝试尝试。

总结

之后还会继续学习 Swoole,与大家继续分享它,有趣!但是可能会更新的比较慢哈。

本作品采用《CC 协议》,转载必须注明作者和本文链接
Hello。
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 1

:smiley:

4年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!