php的流处理
2016-04-09 17:50 phpor 阅读(610) 评论(0) 编辑 收藏 举报工作中有这样一类场景,1、数据量很大,2、需要对数据进行实时的简单处理。例如:用户发布的消息会实时写入到message.txt文件中,写入的同时推送进mcq中(使用php脚本)。那么这个简单的功能就比较适合使用php的流的处理方式来实现。php:// 是php中已经注册的URL风格的封装协议,用于访问各个输入/输出流(I/O streams)。
# php 脚本 mcq.php
<?php $std = fopen("php://stdin","r"); while ( ($line = fgets($std)) !== false ) { //将得到的数据推送到mcq中 put_mcq($line); }
fclose($std);
#shell 脚本
# sread是一个实时获取message.txt文件数据的一个脚本,用户发布的消息会实时写入message.txt文件中
sread message.txt | /bin/php mcq.php
优化:php的手册中建议使用简单的STDIN常量
<?php
while ( ($line = fgets(STDIN)) !== false ) { //将得到的数据推送到mcq中 put_mcq($line); }