引言

PHP 原生实现 异步模型,主要依靠于 Event 事件实现

参考文献

5种IO模型:https://blog.mailjob.net/posts/3565199751.html

github代码下载:https://github.com/mailjobblog/dev_php_io/tree/master/test/async

php Event 事件使用:https://blog.mailjob.net/posts/1280406180.html

模型图

对于异步来说,用户进行读或者写后,将立刻返回,由内核去完成数据读取以及拷贝工作,完成后通知用户,并执行回调函数(用户提供的callback),此时数据已从内核拷贝到用户空间,用户线程只需要对数据进行处理即可,不需要关注读写,用户不需要等待内核对数据的复制操作,用户在得到通知时数据已经被复制到用户空间。我们以如下的真实异步非阻塞为例。

可以发现,用户在调用之后会立即返回,由内核完成数据的拷贝工作,并通知用户线程,进行回调。

图片

PHP原生代码实现

image-20210519232228213