【发布时间】:2011-12-29 13:45:26
【问题描述】:
如果我有一个while循环并且在其中我通过system()执行一个php文件,假设这个php文件需要很长时间才能完成(例如下载图像等),主脚本会等待它完成直到进入下一个循环?
现在看起来它确实在等待当前脚本完成后再转到下一个脚本,但我只是想确定一下。也许知道 PHP 内部原理的人可以提供一些启示。
谢谢。
【问题讨论】:
如果我有一个while循环并且在其中我通过system()执行一个php文件,假设这个php文件需要很长时间才能完成(例如下载图像等),主脚本会等待它完成直到进入下一个循环?
现在看起来它确实在等待当前脚本完成后再转到下一个脚本,但我只是想确定一下。也许知道 PHP 内部原理的人可以提供一些启示。
谢谢。
【问题讨论】:
系统执行命令,然后挂起,直到命令执行。
Note:如果一个程序使用这个函数启动,为了让它继续在后台运行,该程序的输出必须重定向到一个文件或另一个输出流。否则将导致 PHP 挂起,直到 > 程序执行结束。
【讨论】:
一旦 system() 命令完成,循环将继续。解决此问题的方法可能是使用 '&' 开始 bg 作业
http://lowfatlinux.com/linux-processes.html
我假设您使用的是 Linux,我不知道 windows 下的解决方法。
【讨论】:
如果 brunoais 和 Sabeen Malik 方式不起作用,请同时尝试:
system("command > /dev/null &")
windows下我觉得可以用start命令:
system("start command")
【讨论】:
另外,你应该使用 set_time_limit,否则你的脚本的执行将被中止
【讨论】: