Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP:如何等待外部脚本编写的文件存在_Php_Bash - Fatal编程技术网

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

PHP:如何等待外部脚本编写的文件存在,php,bash,Php,Bash,我正在开发一个简单的基于PHP的网站 基本结构是: 它通过web表单接收一些数据作为输入,并将其交给一些用户 要处理的shell脚本(通过system()函数) 处理结果将写入.txt文件 然后脚本读取该文件并在浏览器中显示 移交完成后,生成.txt文件大约需要2-3秒 有没有正确的方法让PHP等待文件生成 目前,我将PHP脚本休眠5秒钟,然后读取文件。这显然不是一个好主意,因为每次执行PHP脚本时,不管实际需要多少时间,都需要5秒钟 在Ubuntu上的Apache上运行,如果相关的话简单回

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

基本结构是:

  • 它通过web表单接收一些数据作为输入,并将其交给一些用户 要处理的shell脚本(通过system()函数)

  • 处理结果将写入.txt文件

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

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

有没有正确的方法让PHP等待文件生成

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


在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。。。这些脚本无论如何只能持续几秒钟,所以我称之为过度使用。