PHP:如何等待外部脚本编写的文件存在
我正在开发一个简单的基于PHP的网站 基本结构是:PHP:如何等待外部脚本编写的文件存在,php,bash,Php,Bash,我正在开发一个简单的基于PHP的网站 基本结构是: 它通过web表单接收一些数据作为输入,并将其交给一些用户 要处理的shell脚本(通过system()函数) 处理结果将写入.txt文件 然后脚本读取该文件并在浏览器中显示 移交完成后,生成.txt文件大约需要2-3秒 有没有正确的方法让PHP等待文件生成 目前,我将PHP脚本休眠5秒钟,然后读取文件。这显然不是一个好主意,因为每次执行PHP脚本时,不管实际需要多少时间,都需要5秒钟 在Ubuntu上的Apache上运行,如果相关的话简单回
- 它通过web表单接收一些数据作为输入,并将其交给一些用户 要处理的shell脚本(通过system()函数)
- 处理结果将写入.txt文件
- 然后脚本读取该文件并在浏览器中显示
在Ubuntu上的Apache上运行,如果相关的话简单回答:不要使用
system()
,使用时不要重定向到文件:
$foo = array();
exec('ls', $foo);
$output = implode("\n", $foo);
简单回答:不要使用
system()
,使用时不要重定向到文件:
$foo = array();
exec('ls', $foo);
$output = implode("\n", $foo);
我认为最好的解决方案是在页面上抛出一个Javascript-ajax调用,每隔几秒钟运行一次以查找更新的文件。一旦找到它,循环停止,页面刷新。我认为最好的解决方案是在页面上抛出Javascript ajax调用,每隔几秒钟运行一次,以查找更新的文件。一旦找到它,循环就会停止,页面就会刷新。我想
system()
会一直等到子进程完成。@Izkata(PHP手册中)如果程序是用这个函数启动的,为了让它在后台继续运行,程序的输出必须重定向到一个文件或另一个输出流。否则将导致PHP挂起,直到程序执行结束。
。在我的例子中,输出被重定向到一个文件,为什么不能让PHP挂起,直到文件被创建?将输出重定向到文本文件您是重定向输出还是在脚本中创建文件?如果是后者,那么就没有问题了,只要使用system,当shell脚本完成时,php脚本就会返回。如果您正在重定向系统调用的输出,则不要这样做。我认为system()
会等到子进程完成。@Izkata(PHP手册中)如果程序是用此函数启动的,为了让它在后台继续运行,程序的输出必须重定向到文件或其他输出流。否则将导致PHP挂起,直到程序执行结束。
。在我的例子中,输出被重定向到一个文件,为什么不能让PHP挂起,直到文件被创建?将输出重定向到文本文件您是重定向输出还是在脚本中创建文件?如果是后者,那么就没有问题了,只要使用system,当shell脚本完成时,php脚本就会返回。如果您正在重定向系统调用的输出,则不要这样做。这需要某种额外的存储,这样您就不会开始轮询其他用户的数据,在javascript和PHP(或使用PHP会话)之间传递某种与输出文件相关联的唯一ID。。。脚本应该只持续几秒钟,所以我称之为过度杀戮。这需要某种额外的存储,因此您不会开始轮询其他用户的数据,在javascript和PHP(或使用PHP会话)之间传递某种与输出文件相关联的唯一ID。。。这些脚本无论如何只能持续几秒钟,所以我称之为过度使用。