我只是不确定... exec(....)的脚本是否等到exec()完成后再继续?
例如我的脚本会像这样流动....
重复10,000次......
在exec完成之前,我是否需要编写一些内容来暂停代码?或者可以使用exec命令,移动文件,然后删除文件?我担心的是程序会在转换文件之前尝试删除这些文件。
我希望这很清楚,谢谢......
答案 0 :(得分:0)
AFAIK exec()
(如果你正在谈论系统调用)是一个阻塞调用,因此将阻止进一步执行脚本(无论它是什么语言!)。
您可以使用&
并将Stderr / Stdout重定向到/ dev / null,以便在后台运行进程并等待完成。
最好的办法是异步进行:
fork() --- Child Process
if fork returns 0
exec() --- Command you want to process your jpegs with
in parent wait() for exec to complete
答案 1 :(得分:0)
来自php doc:http://se1.php.net/manual/en/function.exec.php
注意:
如果程序是使用此功能启动的,则为了它 继续在后台运行,程序的输出必须是 重定向到文件或其他输出流。没有这样做会 导致PHP挂起,直到程序执行结束。
如果您处于循环中,并且想要删除文件后,为什么不在循环结束后删除文件(如果您有足够的存储空间)
您还可以监控3操作的返回,并在确定文件已上传时删除。
symfony组件流程可以帮助您管理此流http://symfony.com/doc/current/components/process.html
希望有所帮助