0

可能重复:
调用另一个 PHP 脚本并在另一个脚本完成之前将控制权返回给用户
如何从另一个 PHP 脚本异步运行 PHP 脚本?

我在 PHP 中使用 exec() 时遇到了一些问题,但我不知道如何解决它。我想使用 exec() 在同一目录中“异步”执行另一个 php 脚本。我在浏览器中打开 a.php 来调用 b.php 但它不起作用。(本地主机是Windows 7 上的 xampp

一个.php:

<?php
exec('php \b.php', $output, $r);
print_r($output);
print_r($r);
?>

b.php:

#!/usr/bin/php
<?php
echo time();
?>

浏览器中的输出

Array ( ) 1

我是使用相关 PHP CLI 的超级初学者...我对此一无所知...谁能举一些简单的例子?比如a.php和b.php应该写什么。

如果您能给我一些指导或建议,非常感谢!


编辑:

我尝试了以下代码,它可以工作,但它不能“异步”运行......如何重定向输出?

在浏览器中打开 callexec.php。

调用exec.php

<?php
exec('C:\xampp\php\php.exe testexec.php');
?>

testexec.php

<?php
echo "start: ",time(),"\n";
sleep(10);
echo "\n";
echo "end: ",time(),"\n";
?>

再次感谢。

4

3 回答 3

1

正如您已经告诉您的 shell-script 它是一个 php 脚本#!/usr/bin/php,您不需要为您的脚本调用 php,您可以像从命令行中的任何脚本一样调用它:

exec('b.php', $output, $r);

顺便说一句,我假设您可以b.php毫无问题地从命令行调用。

于 2012-09-29T16:53:42.250 回答
0

为什么要把事情复杂化?只需使用包含或要求?

于 2012-09-29T17:03:17.917 回答
0

如果您在同一平台上有另一台服务器,则端口号可能存在​​问题。比如可以是oracle数据库服务器、mysql、Apache tomcat等。请确认不同服务器的端口号是否相同。

于 2012-09-29T16:55:21.613 回答