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

问题描述:

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

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

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

例如,你的脚本可以这样做:

<?php 

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

?> 

Exec的具有围绕它的一些安全问题,但它听起来像它可能为你工作。

+1

-q做什么?它还是相关的吗?我正在查看手册页,并且它悄然执行。那是什么意思?压制输出或什么? – Fallenreaper 2013-02-11 03:52:53

//使用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做同样的事情。

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

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

如果您正在进行API调用或运行脚本,这可能不是内存密集型或计算密集型,但确实需要等待大量完成才会显得尤为有用。

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

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