php:如何反复执行来自其他脚本的脚本
每个人 有没有办法让这段代码正常工作:php:如何反复执行来自其他脚本的脚本,php,include,Php,Include,每个人 有没有办法让这段代码正常工作: <?php while (1) { include('third_party_script.php'); } ?> 我不知道第三方脚本.php中有什么。 它可能看起来像这样: <?php function some() { return 0;} some(); ?> <?php while (1) { passthru('php third_par
<?php
while (1) {
include('third_party_script.php');
}
?>
我不知道第三方脚本.php中有什么。
它可能看起来像这样:
<?php
function some() { return 0;}
some();
?>
<?php
while (1) {
passthru('php third_party_script.php');
}
?>
如果在第三方脚本.php中有函数声明,我将得到一个“cannot Redclare”错误。因此,我不能使用“include”o“require”。有解决办法吗
提前感谢。如果内部有类或函数,只需调用该函数或实例化该类即可。然而,我想知道为什么你想从一个你不熟悉的内容的脚本中运行一些东西 但是,如果您知道,它的工作原理如下:
<?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();
}
?>
在没有转义的情况下反复循环代码最终会杀死您的进程。最终“时间”可能不会太长。总而言之,这听起来像是一个你不想追求的方向…我不知道你想做什么,但是我假设你正在尝试为某种框架编写一个可以运行外部代码段(如插件)的脚本 在这种情况下,你真正应该做的是在插件上增加一些结构 插件代码如下所示
<?php
pluginname_exec($args) {
...
Plugin Code gose here
...
}
?>
其中,$thisplugin
是一个包含插件名称的变量,很可能是文件名,不带.php
这样,您只需包含一次文件,但可以根据需要多次调用代码
如果由于插件系统以外的原因而试图执行一些未知代码,这很可能是个坏主意。正如其他人所说,您可能不想这样做 然而,一个可能的解决方案是这样的:
<?php
function some() { return 0;}
some();
?>
<?php
while (1) {
passthru('php third_party_script.php');
}
?>
但这取决于第三方脚本正在执行的操作,类似的操作将起作用:
<?php
function print_something()
{
print "hey";
}
print_something();
?>
(尽管如果您运行类似于insidewhile(1)
,它会将事情锁定)
但是,需要获取变量之类的东西不会
关于做上述工作,我有很多顾虑,但这是你所遇到的具体问题的一个可能的解决方案(而不是你试图解决的更一般的问题)
另一个可以实现类似这类深奥事物的地方是runkit:
但是我没有足够的经验来“推荐”它。当你不知道它包含什么内容时,你在包含一个文件?这听起来不是一个好主意。当前的解决方案有什么问题?你到底想做什么,我不喜欢无限包含一个文件的想法。使用cURL反复访问该脚本?我不打算运行它。它将由“third_party_script.php”的作者运行。假设我正在编写一个允许反复执行“第三方脚本.php”的库。非常感谢您的回复。这几乎就是我想要的。几乎是这样,因为就我所知,passthru将派生另一个进程,并使用另一个php解释器执行“third_party_script.php”。是的,这就是为什么它作为传递数据的解决方案有点有限的原因,尽管如果您只需要定义一些第三方脚本可用的常量或函数,则可以使用中间包装器。在PHP中几乎不能重新声明函数或类。你可以尝试滥用名称空间或eval来实现你想要的,但我想这会给你带来一大堆麻烦。