初始化php脚本,然后停下来做另一项工作


Initialize a php script then stop to do another job

我正在寻找从php脚本(main.php)初始化php脚本(script.php)的方法,然后main.php快速跳过script.php的运行过程以继续其主要工作。

我知道这是一个令人困惑的问题,有点难以理解我想问什么。基本上我有main.php文件:
 <?php
 include('script.php');

//do the main job
?>

但是script.php脚本需要很长时间才能运行,所以我希望在include('script.php'命令初始化之后,main.php脚本将快速忽略这一步并继续进行其主任务,无论script.php是否已经完成。

有办法实现这样的事情吗?

PHP是单线程的(好吧,不是全部,但这超出了范围)。

如果你想产生一个单独的进程,你将不得不使用PHP cli(可执行的PHP)使用ie。exec() (http://php.net/manual/en/function.exec.php)。当然,这意味着你需要在php配置中启用exec。

exec('/usr/bin/php script.php > /dev/null 2>&1 &');

代替include

当然/usr/bin/php的路径应该指向文件系统上的php可执行文件

&使进程在后台运行,使主脚本继续。

> /dev/null位导致输出变为空。2>&1它引起的错误也进入空(所以一定要找到另一种方式来记录)

两者都是必需的,因为一旦将脚本丢到后台,就没有办法捕获输出。

也请阅读http://php.net/manual/en/function.exec.php的"see Also"位,以获取其他选项,如passthru, system等。你需要使用什么取决于你到底需要什么