我正在运行一个连续的 PHP 循环,该循环使用exec("php ...");
. 计划是让执行的脚本运行,然后休眠 2 秒,然后重新启动。但是,似乎我的循环每 2 秒开始一个新实例。这么长的问题,我如何让我的第一个 php 脚本等到脚本 nr 2 的执行完成?
所有这些都是使用命令行运行的。我还希望脚本 nr 2 中的 echo 函数显示在命令行上。
任何想法都会有所帮助。
谢谢
Exec 不维护实例之间的任何状态信息。您可以:
在下标中循环
或者
您可以设置某种环境变量,或者在下标开头读取并在结尾写入。
或者
您可以以类似的方式将下标读/写到文件中,
或者
您可以将参数传递给捕获输出的下标
为了输出到屏幕,您可以使用其他 exec/system 调用:
exec
shell_exec
passthru
system
我相信 passthru() 会起作用。如果不是,另一种可能性是调用 exec(),使用输出参数从下标捕获输出字符串。然后只是在返回下标时回显该输出。
我也相信使用输出参数(或在变量中捕获函数的结果)将导致 exec 等到命令完成后再继续。
问题是,一旦你执行脚本,它就会运行。另一个 exec 将启动另一个实例,就像您发现的那样。
您可以做的是将 sleep 放入已执行的脚本中。一旦它开始运行,它就会自己休眠。您可以查看设置执行时间限制并可能忽略用户中止。您可以创建一个函数并让您的脚本调用该函数。然后它将在执行后休眠并再次调用该函数。
// 可以在这里设置时间限制 函数循环() { 睡眠(120); //你可以检查是否循环。 环形(); } 环形();