php:如何一遍又一遍地从其他脚本执行脚本

时间:2011-07-08 10:10:54

标签: php include

大家

有没有办法让这段代码工作:

<?php
    while (1) {
        include('third_party_script.php');
    }
?>

我不知道third_party_script.php中的内容。 它可能看起来像这样:

<?php
    function some() { return 0;}
    some();
?>

如果third_party_script.php中有函数声明,我将收到“无法重新声明”错误。所以我不能使用“include”o“require”。有解决方案吗?

提前致谢。

3 个答案:

答案 0 :(得分:1)

正如其他人所说,你可能不想这样做。

可能的解决方案是这样的:

<?php
    while (1) {
        passthru('php third_party_script.php');
    }
 ?>

但这取决于第三方脚本正在做什么,这样的事情会起作用:

<?php

function print_something()
{
        print "hey";
}

print_something();

?>

(虽然如果你在while(1)内部运行

,它会锁定一些东西)

但是,需要获取_GET变量等等的东西不会。

我有很多关于做上述事情的担忧,但它是你所遇到的具体问题的一种可能的解决方案(而不是你想要解决的更普遍的问题)。

另一个寻求实现这样深奥的东西的地方是runkit:

http://www.php.net/manual/en/intro.runkit.php

但我没有足够的经验来“推荐”它。

答案 1 :(得分:0)

如果内部有类或函数,则只需调用该函数或实例化该类。我不知道你为什么要从脚本中运行你不熟悉的内容。

如果您 知道,它将如下所示:

<?php
    while (1) {
        include('third_party_script.php');
        //call some_function which is defined in file above
        some_function();
        //instantiate object and call some_function
        $Object = new ThirdPartyClass();
        $Object->some_function();
    }
?>

在没有转义的情况下一遍又一遍地循环代码将最终杀死你的进程。最终可能也不会在'时间'那么长。总而言之,这听起来像是你不想追求的方向......

答案 2 :(得分:0)

我不是你想要做什么的,但是我假设你正在尝试编写一个可以运行外部代码段的脚本,例如插件,用于某种框架。

在这种情况下你应该做的是在插件上强制实现一些结构,即

插件代码看起来像

<?php
   pluginname_exec($args) {
      ...
      Plugin Code gose here
      ...
   }
?>

然后,您的脚本应在加载

时导入脚本

然后当你想要运行插件时,你会调用

call_user_func("{$thisplugin}_exec",$args)

其中$thisplugin是一个包含插件名称的变量,很可能是文件名,不包含.php

这样你只需要包含一次文件,但可以根据需要多次调用代码。

如果你试图以插件系统的其他原因执行某些未知代码,那么这很可能是一个坏主意。