代码改变世界

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); }