我有一个小程序,可以通过cron每隔30秒-1分钟运行并生成一个新的文本转储。
program > dump.txt
但是我有另一个PHP Web程序,只要有人访问网页,就会以只读模式访问文本转储。问题是,我相信如果有人访问网站,那么cron作业运行的第二个网页可能只读取一半的文件,因为我认为Linux在使用>
时不会锁定文件。
我在考虑做:
echo "###START###" > dump.txt
program >> dump.txt
echo "###END###" >> dump.txt
然后当PHP网页读取内存中的转储时,我可以做一个正则表达式来检查是否存在开始和结束标志,如果没有,则再次尝试,直到它读取带有两个标志的文件。
这会确保文件的完整性吗?如果没有,我如何确保在我阅读dump.txt
时它将完好无损。
答案 0 :(得分:4)
不是在目录中创建文件,为什么不在其他地方创建它?然后在写完数据之后,将其移到webroot中并覆盖之前的数据集。
示例:
sh create_some_data.sh > /home/cronuser/my_data.html
mv /home/cronuser/my_data.html /var/www/