如何从PHP脚本(如批处理文件)中运行多个PHP脚本?

时间:2009-05-21 18:32:22

标签: php

如何从另一个PHP脚本中运行多个PHP脚本,如批处理文件?我不认为包含会起作用,如果我理解包括在做什么;因为我正在运行的每个文件都会重新声明一些相同的函数,等等。我想要的是执行每个新的PHP脚本,就像它在一个干净,新鲜的堆栈中,不知道变量,函数等。来到它面前。

更新:我应该提到脚本在Windows上运行,但不在Web服务器上运行。

4 个答案:

答案 0 :(得分:10)

您可以使用exec()函数将每个脚本作为外部命令调用。

例如,您的脚本可以执行以下操作:

<?php

exec('php -q script1.php');
exec('php -q script2.php');

?>

Exec存在一些安全问题,但听起来它可能适合你。

答案 1 :(得分:6)

//使用exec http://www.php.net/manual/en/function.exec.php

<?php

exec('/usr/local/bin/php somefile1.php');
exec('/usr/local/bin/php somefile2.php');

?>

在过去,我做过类似创建包含每个文件链接的框架集的事情。调用框架集,然后调用所有脚本。这些天你可以用iframe或ajax做同样的事情。

答案 2 :(得分:3)

exec()是一个很好用的函数,但是你必须等到进程终止才能继续使用父脚本。如果你正在做一批每个进程需要一些时间的进程,我建议使用popen()。

你得到的变量创建了一个指向管道的指针,它允许你一次完成一些进程,将它们存储在一个数组中,然后在它们全部完成后以串行速度访问它们(更多同时)使用steam_get_contents()。

如果您正在进行API调用或运行可能不是内存密集型或计算密集型但需要大量等待完成每个脚本的脚本,这将非常有用。

答案 3 :(得分:3)

如果您需要这些脚本的任何返回结果,则可以使用system函数。

$result = system('php myscript.php');
$otherresult = system('php myotherscript.php');