[原创]在Php函数:file_put_contens()写日志,通过tail -f *.txt 出现:filetail: /tmp/feedContent.txt: file truncated的解决方法!

jackxiang 2009-2-9 10:38 | |
问题提出:
        做php程序,往往有可能打印一些东西出来,但是涉及到页面的显示,往往打印到后台日志文件中,有的专门有日志函数,为了方便,我就直接用了php5的file_put_contents()函数,通过tail -f /tmp/feedContent.txt. 但是,发现出现:tail: /tmp/feedContent.txt: file truncated 的情况!

估计问题:
     查了下google,发现:http://topic.csdn.net/u/20080201/09/2f55ff69-96f9-4960-a6d5-14aa2585dafe.html  这个文章!
    看后突然想起我的用法是:

             file_put_contents("/tmp/feedContent.txt",$record_info);
            $record_content_array = urlencode(serialize($record_info));
            $flag = $myfrd->sendSnsFeeds($uid, DEF_RECORD_FEED_TYPE,$record_content_array,DEF_RECORD_FEED_SETTING);
            file_put_contents("/tmp/feedContent.txt",$record_content_array);


如果文件已存在,原有文件被重写。写日志的程序估计不是简单的追加方式有可能还对文件进行了某些特殊处理,导致tail处理异常
估计是每次都重新写造成。改为:


             file_put_contents("/tmp/feedContent.txt",$record_info,FILE_APPEND);
            $record_content_array = urlencode(serialize($record_info));
            $flag = $myfrd->sendSnsFeeds($uid, DEF_RECORD_FEED_TYPE,$record_content_array,DEF_RECORD_FEED_SETTING);
            file_put_contents("/tmp/feedContent.txt",$record_content_array,FILE_APPEND);


问题得到解决,再没有提示:
tail: /tmp/feedContent.txt: file truncated!具体查看:FILE_APPEND和tail -f的机制即可。。。
用vi模拟出现tail -f *.txt  出现tail: /tmp/feedContent.txt: file truncated 这个行为:
最后:
用vi 打开:

vi  /tmp/feedContent.txt

命令行输入:
g/^/d  
清空里面内容,然后wq!保存


tail -f /tmp/feedContent.txt


出现:tail: /tmp/feedContent.txt: file truncated

问题得证!





    

作者:jackxiang@向东博客 专注WEB应用 构架之美 --- 构架之美,在于尽态极妍 | 应用之美,在于药到病除
地址:http://jackxiang.com/post/1614/
版权所有。转载时必须以链接形式注明作者和原始出处及本声明!


最后编辑: jackxiang 编辑于2009-2-9 10:44
评论列表
发表评论

昵称

网址

电邮

打开HTML 打开UBB 打开表情 隐藏 记住我 [登入] [注册]