0

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

我知道这是一个令人困惑的问题,并且有点难以理解我想问的问题。基本上我有main.php文件:

 <?php
 include('script.php');


//do the main job
?>

但是script.php脚本需要很长时间才能运行,所以我希望在include('script.php'命令初始化后,main.php脚本会很快忽略这一步,继续执行其主要工作,无论是否script.php完成。

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

非常感谢。

4

1 回答 1

1

PHP 是单线程的(嗯,不完全是,但这超出了范围)。

如果你想生成一个单独的进程,你将不得不通过使用 ie 来使用 PHP cli (executable php)。exec()http://php.net/manual/en/function.exec.php)。当然,这确实意味着您需要在 php 配置中启用 exec。

所以代替包含,使用exec('/usr/bin/php script.php > /dev/null 2>&1 &');

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

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

> /dev/null位导致输出变为虚无。它2>&1会导致错误也变成虚无(所以一定要找到另一种记录方式)

两者都是必需的,因为一旦将脚本扔到后台,您就无法捕获输出。

另请阅读http://php.net/manual/en/function.exec.php的“另见”部分,了解其他选项,如 passthru、系统等。您需要使用什么取决于您到底需要什么。

于 2013-06-02T11:56:09.573 回答