PHP新增eio扩展,可以写类似node.js一样的异步IO了。
可以结合libevent一起来用。libevent主要是解决了网络异步,实际上写代码是时,IO还是同步的,必须处理完请求后同步fwrite给客户端。如果IO异步的话,进程就可以马上去处理其他请求,不用等待IO操作完成。
比如接到一个网络请求,需要创建一个目录,传统的程序就直接mkdir,这里的mkdir就是同步的。必须处理完成后才会继续向下执行。
异步IO的话,eio_mkdir,里头可以填一个回调函数。这里不是同步的,所以代码马上就向下执行。当mkdir操作完成后,才会执行回调函数。
当然有些事情是必须同步的。node.js里头就有很多这样的做法。比如 db.query(sql).callback(proc),查询SQL语句,完成后回调 proc。
Url:
http://pecl.php.net/package/eio
DownLoad:http://pecl.php.net/get/eio-1.2.0.tgz
其他资料:
https://github.com/chobie/php-uv/blob/master/examples/fsevevnt.php
https://github.com/chobie/php-uv/blob/master/examples/http_server.php
可以结合libevent一起来用。libevent主要是解决了网络异步,实际上写代码是时,IO还是同步的,必须处理完请求后同步fwrite给客户端。如果IO异步的话,进程就可以马上去处理其他请求,不用等待IO操作完成。
比如接到一个网络请求,需要创建一个目录,传统的程序就直接mkdir,这里的mkdir就是同步的。必须处理完成后才会继续向下执行。
异步IO的话,eio_mkdir,里头可以填一个回调函数。这里不是同步的,所以代码马上就向下执行。当mkdir操作完成后,才会执行回调函数。
当然有些事情是必须同步的。node.js里头就有很多这样的做法。比如 db.query(sql).callback(proc),查询SQL语句,完成后回调 proc。
Url:
http://pecl.php.net/package/eio
DownLoad:http://pecl.php.net/get/eio-1.2.0.tgz
其他资料:
https://github.com/chobie/php-uv/blob/master/examples/fsevevnt.php
https://github.com/chobie/php-uv/blob/master/examples/http_server.php
作者:jackxiang@向东博客 专注WEB应用 构架之美 --- 构架之美,在于尽态极妍 | 应用之美,在于药到病除
地址:https://jackxiang.com/post/5735/
版权所有。转载时必须以链接形式注明作者和原始出处及本声明!
最后编辑: jackxiang 编辑于2013-3-18 18:16
评论列表