Php 应用程序的进度条
我已经在我的Windows服务器上实现了一个SAAS场景:用户可以在中上载一个文件,然后Php 应用程序的进度条,php,progress-bar,Php,Progress Bar,我已经在我的Windows服务器上实现了一个SAAS场景:用户可以在中上载一个文件,然后Fetch.exe是一个在服务器中托管的应用程序,在C#中编码为,Fetch.exe将上载的文件作为输入,执行并为用户生成一个要下载的输出 因此,在我的php中,我使用exec包装Fetch.exe: exec("Fetch.exe " . $inputFile . " > " . $outputFile) 上载和执行(即,Fetch.exe)可能需要几秒钟以上的时间,我想向用户展示它正在处理,一切都
Fetch.exe
是一个在服务器中托管的应用程序,在C#中编码为,Fetch.exe
将上载的文件作为输入,执行并为用户生成一个要下载的输出
因此,在我的php中,我使用exec
包装Fetch.exe
:
exec("Fetch.exe " . $inputFile . " > " . $outputFile)
上载和执行(即,Fetch.exe
)可能需要几秒钟以上的时间,我想向用户展示它正在处理,一切都很顺利
我发现了一些讨论如何显示上传进度条的帖子。然而,有人知道我能做些什么来显示Fetch.exe
的大致进度吗?我是否必须将其拆分为更小的应用程序并使用几个exec
?您可以为Fetch.exe
提供从php随机生成的ID,例如从函数中。Fetch.exe将创建一个名为.txt
的文件,其中包含进度百分比。从浏览器中,您可以使用该唯一ID调用另一个脚本以获取该.txt文件的内容。按照顺序,应该是这样的:
- 用户将文件上传到PHP
- PHP:
- 处理上载的文件
- 创建唯一ID
- 使用文件和唯一ID启动Fetch.exe
- 返回嵌入唯一ID的页面
以下情况同时发生:
- Fetch.exe创建一个名为
/progress/uniqueid.txt
的文本文件,其中uniqueid为名称。它将进度记录到其中
- 浏览器对
http://example.com/progress/uniqueid.txt
并向用户显示进度
最后,当进度达到100%时,浏览器将下载文件。您可能需要添加的唯一内容是在一段时间后对进度文件进行修剪。假设您每小时删除所有超过10分钟的文件。您的PHP程序需要一种方法来了解子进程(Fetch.exe应用程序)的状态,因此Fetch.exe需要发送有关处理状态的信息,最自然的方法是通过标准输出(标准输出是从cmd运行程序时提供的信息)
知道了这一点,你可以跑步并继续阅读
第二,你可以使用PHP和,通过运行的PHP脚本从客户端页面建立通信,你可以找到一个很好的教程来说明如何做到这一点。Fetch.exe的输出实际上是什么样子的?它只是一个文本,可以是短的,也可以是长的。要处理inputFile
并生成是文本,由于后面的分析,可能需要几秒钟以上的时间…您需要一个百分比的进度,或者只需要一个“正在加载”信息?@Cesar一个大概的百分比会更好。。。