不寻找书面代码,只是建议如何或如何做我解释的事情。这是最难的部分,将我的想法传达到我需要做的事情,而不知道会有什么功能。
我想通过一个简单的http web调用来执行PHP脚本A.没什么大不了。内部脚本AI希望它执行脚本B,我知道该怎么做,我希望它也执行脚本C,但只需要在60秒的时间范围内执行一次脚本C,无论脚本A被调用多少次on,因为脚本A将在该时间范围内多次调用并且不断需要执行脚本B.当60秒(或我想指定的任何内容)已经过去时,脚本A将自行重置,以便脚本C可再次执行新的60秒时间框架。定时器=睡眠(x)。那么我需要做什么来编写脚本A,这样它可能会在执行一次后的60秒内排除执行脚本C?就像执行脚本C的代码一样,将被“锁定”或传递。我应该研究哪些功能来学习这个?结构正在扼杀我。
答案 0 :(得分:2)
我会使用sessions。记录在会话变量中调用C的时间,并且在此时间过去60秒之后不允许A调用C。在A的顶部(它需要在脚本的任何输出之前发生)添加:
session_start();
当你想要调用C时,请使用以下内容:
if (!isset($_SESSION['c_call_time']) || $_SESSION['c_call_time'] < time() - 60) {
$_SESSION['c_call_time'] = time();
// call C
}
@ user655685提出了一个关于可能被不同用户调用的脚本的有效点,以及单独应用于每个用户的时间限制。如果这是一个问题,您可以通过声明为所有用户使用相同存储位置的自定义会话处理程序来解决此问题。有关如何执行此操作的说明,请参阅manual(在他们的示例中,您将忽略传递给$id
和read
回调的write
参数。
答案 1 :(得分:1)
会话可以解决这个问题,但如果脚本被另一个用户调用,这会破坏,因为php运行每个环境单独在php上运行这是不可能的。您必须创建一个外部变量(即文件)或数据库条目,以跟踪上次运行的时间,然后每分钟删除该文件(文件/数据库条目具有上次运行的时间戳)