首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >正在使用的Php文件

正在使用的Php文件
EN

Stack Overflow用户
提问于 2018-10-18 09:55:13
回答 1查看 88关注 0票数 0

我正在将文件MRXS转换为TIFF。有时候需要。在此任务完成后,我想调用另一个shell_exec。但我不知道转换什么时候完成。

代码语言:javascript
复制
shell_exec("vips openslideload /tmpSlides/" . $path . " /tmpSlides/test.tiff[tile,compression=lzw]");

此命令开始转换任务。创建一个空的tiff文件,并且这个tiff文件的大小在增加,直到任务完成。

我要查一下,那个文件还在用吗?如果这个文件没有使用,我会理解任务完成。或者是否有检查任务完成的方法?

我想写这样的东西:

代码语言:javascript
复制
if(RUN_UNTIL_CONVERTION_DONE("/tmpSlides/test.tiff")) {
 shel_exec(
"kdu_compress.exe -i /tmpSlides/test.tiff -o /tmpSlides/test.jp2 Creversible=yes -rate 0.25 Clayers=1 Clevels=7 Cprecincts={256,256} Cblk={64,64} Corder=RPCL Cuse_sop=yes Stiles={1024,1024} ORGgen_plt=yes ORGtparts=R");
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-10-18 10:11:07

基本上它取决于您的操作系统。Unixes和Windows使用不同的方法来检查这一点,因此我将向您展示两个案例:

视窗

对于Windows,有一个名为手柄的程序将显示哪个程序使用您的文件。安装它,然后在PHP中使用shell_exec('handle <your file>')并解析输出以检查您的vips程序是否仍在修改文件。您甚至可以在句柄中使用-p选项将检查限制在vips进程。

Unix

在Unix派生系统(POSIX)上,您可以使用名为fuser的内置工具执行以下操作:

fuser <your file>

然后,对于Windows,使用shell_exec命令并解析结果,以检查您的文件是否已完成编辑。

另一种方式

另一种方法是检查进程是否仍在执行。因此,在Linux上,您可以使用ps aux和管道中的grep来过滤您要查找的进程,并检查它是否仍在运行。不幸的是,在Windows中没有这样的方法,因为tasklist没有显示为启动的进程提供的选项。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52871468

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档