当文件被包含多次时出现问题 "cannot redeclare" - PHP

Problem "cannot redeclare" when the file is included more times - PHP

我正在尝试 运行 同一个文件多次(一次又一次...) 但是我有这个问题Cannot redeclare function

这是我在文件中的代码test.php

$word= hello();
print_r($word);

include('test.php');    


function hello(){
    $x= "ok";
    return $x;
}

当函数打印我想要的单词时 运行 再次与 include 相同的文件 问题是Cannot redeclare hello()

详情

再次运行相同的文件我可以使用cronjob喜欢对其他文件做的但在这个项目中我不知道什么时候再次运行文件.我必须等待 test.php 中的代码执行。 执行的时间是可变的,所以我无法在每 1 分钟或 2 分钟 运行 文件时设置 cronjob。

编辑:解释更多

我有一个名为 "A.php" 的文件,其中每两分钟创建两个其他文件,其中包含两个不同的数组(为简单起见,我们将其称为 array1.php 和 array2.php)。

cron 作业每两分钟执行一次 "A. php",其中的代码会破坏并创建两个新的数组文件。

在我的新项目("test.php")中,我使用这两个文件的数组向我的电报发送通知。 只有在这 2 个数组中有新内容时才会发送通知。

如果我为 "test.php" 使用 cronjob,我可能会遇到问题:如果 "A.php" 由于某种原因未能更新两个数组,"test.php" 会发送相同的通知两次。

因此我想在文件末尾运行 "test.php": 在test.php开头外推两个数组的filemtime(),在"test.php"结尾再次提取两个数组的filemtime()。 如果这两个文件已更新(它们具有不同的时间戳),我会再次包含 "test.php",否则我会休眠 10 秒并重复比较。

更改您的 cron 作业,使其在 A.php 之后运行 test.php,但前提是 A.php 成功。

*/2 * * * * php A.php && php test.php
如果不成功,

A.php 应该以非零代码退出;它可以用

做到这一点
die(1);

如果您想要额外检查,test.php 可以将文件的时间戳保存在另一个文件中。当它启动时,它可以读取该文件以获取以前的时间戳,并将当前时间戳与其进行比较。如果它们没有更改,则不会发送通知。