php使用inotify实现队列处理
2013-08-30 15:58
417 查看
php使用inotify实现队列处理
参考如下文章:
http://blog.jiunile.com/php%E4%BD%BF%E7%94%A8inotify%E5%AE%9E%E7%8E%B0%E9%98%9F%E5%88%97%E5%A4%84%E7%90%86.html
http://sexywp.com/use-inotify-to-monitor-file-system.htm
上面的我已经测试,确实是正确的。
首先,我们需要达成以下一些共识:
/dev/shm 为linux下的内存目录,显然在这个目录下建立的东西会放在内存中,默认可以使用50%的内存,在内存不足时,可通过swap进行切换到磁盘。
inotify是linux下的文件系统事件监控,可以满足各种文件监控需要,提供了诸如inotify_init,inotify_read等接口,需要linux2.6或以上的内核(uname -a查看),cygwin下好像不能实现。
php默认是不提供支持inotify的扩展,所以我们需要通过pecl下载编译安装。
下载inotify (http://pecl.php.net/package/inotify),解压并安装:
接着在php.ini文件中加载inotify.so,查看有没有加载成功可通过php -i|grep inotify查看。
接着在/dev/shm建立内存目录,因为队列的处理是需要较高的速度,放到磁盘会有一定的I/O时间消耗,我们建立/dev/shm/inotify目录,然后用php写一个死循环的demo去监控目录,另外,通过变更/dev/shm/inotify目录的文件或属性查看结果:
使用inotify模块比不断地循环和scan目录要灵活且省资源,在inotify_read处,没有收到任何事件之前是会一直阻塞的,所以这里的while就不存在有没有操作都需要循环执行。
尝试在/dev/shm/inotify建立一个test.txt的新文件,会在inotify_read返回一个包含所有文件的数组,如:
参考如下文章:
http://blog.jiunile.com/php%E4%BD%BF%E7%94%A8inotify%E5%AE%9E%E7%8E%B0%E9%98%9F%E5%88%97%E5%A4%84%E7%90%86.html
http://sexywp.com/use-inotify-to-monitor-file-system.htm
上面的我已经测试,确实是正确的。
首先,我们需要达成以下一些共识:
/dev/shm 为linux下的内存目录,显然在这个目录下建立的东西会放在内存中,默认可以使用50%的内存,在内存不足时,可通过swap进行切换到磁盘。
inotify是linux下的文件系统事件监控,可以满足各种文件监控需要,提供了诸如inotify_init,inotify_read等接口,需要linux2.6或以上的内核(uname -a查看),cygwin下好像不能实现。
php默认是不提供支持inotify的扩展,所以我们需要通过pecl下载编译安装。
下载inotify (http://pecl.php.net/package/inotify),解压并安装:
接着在/dev/shm建立内存目录,因为队列的处理是需要较高的速度,放到磁盘会有一定的I/O时间消耗,我们建立/dev/shm/inotify目录,然后用php写一个死循环的demo去监控目录,另外,通过变更/dev/shm/inotify目录的文件或属性查看结果:
尝试在/dev/shm/inotify建立一个test.txt的新文件,会在inotify_read返回一个包含所有文件的数组,如:
相关文章推荐
- 基于PHP使用rabbitmq实现消息队列
- PHP图片处理之使用imagecopyresampled函数实现图片缩放例子
- PHP网页服务实现注册和商店NPC管理(安装+搭建+使用+问题处理)
- redis队列处理在PHP里的使用 star.Hou的红楼一梦
- PHP使用swoole来实现实时异步任务队列
- 基于PHP使用rabbitmq实现消息队列
- 使用Redis+php-resque实现消息队列
- php使用高斯算法实现图片的模糊处理功能示例
- MVC 4中使用ServiceStack.Redis实现Redis队列【错误日志并发处理】
- PHP使用pdo实现事务处理操作示例
- PHP图片处理之使用imagecopyresampled函数实现图片缩放例子
- php使用xa规范实现分布式事务处理
- 使用相关函数实现PHP处理分页
- PHP中利用redis实现消息队列处理高并发请求
- PHP使用php-resque库配合Redis实现MQ消息队列的教程
- PHP中利用redis实现消息队列处理高并发请求--简洁代码实现效果
- PHP使用守护进程处理队列
- PHP使用swoole来实现实时异步任务队列
- PHP使用QPM实现多进程并行任务处理程序
- PHP使用MySQL实现消息队列