PHP:如何等待外部脚本编写的文件存在


PHP : How to wait for a file written by an external script to exist

我正在开发一个简单的基于PHP的网站

基本结构是:

  • 它通过网络表单输入一些数据,并将其交给一些要处理的shell脚本(通过system()函数)

  • 处理结果被写入一个.txt文件

  • 该文件随后被脚本读取并显示在浏览器中

移交完成后,生成.txt文件大约需要2-3秒

有什么正确的方法可以让PHP等待文件生成吗?

目前,我让PHP脚本休眠5秒钟,然后读取存在的文件。这显然不是一个好主意,因为每次执行PHP脚本时,无论实际需要多少时间,都需要5秒。

在Ubuntu上的Apache上运行(如果相关的话)

简单答案:不要使用system(),使用exec()而不重定向到文件:

$foo = array();
exec('ls', $foo);
$output = implode("'n", $foo);

我认为最好的解决方案是在页面上抛出一个Javascript ajax调用,该调用每隔几秒钟运行一次,以查找更新的文件。一旦找到它,循环就会停止并刷新页面。