【问题标题】:PHP exec on another PHP file - How to get my script to wait?另一个 PHP 文件上的 PHP exec - 如何让我的脚本等待?
【发布时间】:2011-07-20 13:29:15
【问题描述】:

我正在运行一个连续的 PHP 循环,该循环使用 exec("php ..."); 执行另一个 PHP 文件。计划是让执行的脚本运行,然后休眠 2 秒,然后重新启动。但是,似乎我的循环每 2 秒开始一个新实例。这么长的问题,我如何让我的第一个 php 脚本等到脚本 nr 2 的执行完成?

所有这些都是使用命令行运行的。我还希望脚本 nr 2 中的 echo 函数显示在命令行上。

任何想法都会有所帮助。

谢谢

【问题讨论】:

    标签: php function loops exec infinite


    【解决方案1】:

    Exec 不维护实例之间的任何状态信息。你可以:
    在您的下标中循环

    您可以设置某种环境变量,或者在下标开头读取并在末尾写入。

    您可以以类似的方式将下标读/写到文件中

    您可以将参数传递给捕获输出的下标

    为了输出到屏幕,您可以使用其他 exec/system 调用:
    执行
    shell_exec
    直通
    系统

    我相信 passthru() 会起作用。如果不是,另一种可能性是调用 exec(),使用输出参数从下标捕获输出字符串。然后只是在返回下标时回显该输出。

    我也相信使用输出参数(或在变量中捕获函数的结果)将导致 exec 等到命令完成后再继续。

    【讨论】:

    • 这是一个非常有趣且可能的理论。我稍后会测试它
    【解决方案2】:

    问题是,一旦你执行脚本,它就会运行。另一个 exec 将启动另一个实例,就像你发现的那样。

    你能做的是 将 sleep 放入执行的脚本中。一旦它开始运行,它就会自己休眠。您可以查看设置执行时间限制并可能忽略用户中止。 您可以创建一个函数并让您的脚本调用该函数。然后它会在执行后休眠并再次调用该函数。

    // 可以在这里设置时间限制 函数循环() { 睡眠(120); //你可以检查是否循环。 环形(); } 环形();

    【讨论】:

      猜你喜欢
      • 2023-03-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多