今天,在写一个脚本,需求是统计出年nginx的日志文件:access.log中用户访问的IP的次数。
由于我的开发环境是在Linux下面,于是我采用Linux下面的awk命令进行统计。
文件1.access.log是有满足awk查询条件的内容,这里列2条
执行代码(注意这里写文件操作的是用>>,数据添加文件后面):
执行文件输出的内容:
现在问题出现了:当我们在Linux命令行下面执行$command里面的内容,是可以在$outFile里面查看到我们期待的数据。但是当我在Linux下面执行PHP这个脚本的时候。出现了一个奇怪的现象:文件中是有内容的,file_get_contents却没有把内容打印出来。
结论:程序异步执行了,PHP执行完Linux的命令。Linux只是返回函数执行成功的状态,然后异步去写文件了。当PHP执行file_get_contents函数时候,Linux并没有写好文件。
现在换一种方法去获取文件的内容:
现在我先等子进程执行完数据,然后父进程在去获取文件的内容,就可以将文件的内容打印出来了。