【问题标题】:executing external php files within loop在循环中执行外部 php 文件
【发布时间】:2011-12-29 13:45:26
【问题描述】:

如果我有一个while循环并且在其中我通过system()执行一个php文件,假设这个php文件需要很长时间才能完成(例如下载图像等),主脚本会等待它完成直到进入下一个循环?

现在看起来它确实在等待当前脚本完成后再转到下一个脚本,但我只是想确定一下。也许知道 PHP 内部原理的人可以提供一些启示。

谢谢。

【问题讨论】:

    标签: php internals


    【解决方案1】:

    系统执行命令,然后挂起,直到命令执行。

    Note:
    

    如果一个程序使用这个函数启动,为了让它继续在后台运行,该程序的输出必须重定向到一个文件或另一个输出流。否则将导致 PHP 挂起,直到 > 程序执行结束。

    来自手册:http://php.net/manual/en/function.system.php

    【讨论】:

      【解决方案2】:

      一旦 system() 命令完成,循环将继续。解决此问题的方法可能是使用 '&' 开始 bg 作业

      http://lowfatlinux.com/linux-processes.html

      我假设您使用的是 Linux,我不知道 windows 下的解决方法。

      【讨论】:

      • 如果要获取很多图像,这不是一个特别好的主意。您最终会同时运行成百上千个 PHP 进程。
      【解决方案3】:

      如果 brunoais 和 Sabeen Malik 方式不起作用,请同时尝试:

      system("command > /dev/null &")
      

      windows下我觉得可以用start命令:

      system("start command")
      

      【讨论】:

        【解决方案4】:

        另外,你应该使用 set_time_limit,否则你的脚本的执行将被中止

        【讨论】:

        • 你的说法,更不用说……鹿
        猜你喜欢
        • 2021-01-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-05-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多