php8.1协程语法
PHP 8.1 是 PHP 语言的一个主版本更新。
它包含了许多新功能,包括枚举、只读属性、First-class 可调用语法、纤程、交集类型和性能改进等。
php的协程是新引入的Fiber类的实例,该类的构造方法接受一个callable类型的参数。这个参数可以是匿名函数、函数变量或者实现了__invoke的对象。callable类型可以接收参数,该参数在调用Fiber实例的start方法时传入。
php的协程由start方法激活。激活后会进入协程绑定的callable的代码执行,直到遇到Fiber::suspend()挂起,该静态方法会将当前正在运行的协程(也就是代码所在callable绑定的协程)挂起。如果suspend没有参数,会向外部传递一个null值,如果有参数,会向外传递给激活或让它恢复执行的调用方。
php使用lua+redis实现限流,计数器模式,令牌桶模式
协程间可共享全局变量,同时要维护各自的调用栈结构;这两个要求目前在PHP的架构下较难实现。当然,非阻塞IO是可以通过libevent扩展实现,比如使用laruence的YAR。
网页游戏能用PHP做后端开发吗
PHP配合swoole 应该是可以实现的多线程的。
swoole是PHP的协程高性能网络通信引擎,提供了多种通信协议的网络服务器和客户端模块。包括:
TCP/UDP/UnixSocket服务器
Http/WebSocket/Http2.0服务器端
异步/同步TCP/UDP网络客户端
异步MySQL
异步Redis
AsyncTask
毫秒定时器
异步文件读写
异步DNS查询
Http客户端
除了异步IO的支持之外,为多进程的模式设计了多个并发数据结构和IPC通信机制,可以大大简化多进程并发编程的工作。其中包括了:
并发原子计数器
并发HashTable
内存通道Channel
锁Lock
进程间通信IPC
可以广泛应用于互联网、移动通信、企业软件、网络游戏、物联网、车联网、智能家庭等领域。
其中战旗直播,虎牙直播。都用到了swoole开发。