php exec问题

时间:2012-09-29 16:47:56

标签: php asynchronous exec command-line-interface

  

可能重复:
  Call another PHP script and return control to user before the other script completes
  How to run a PHP script asynchronously from a another PHP script?

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

a.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。

callexec.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";
?>

再次感谢。

3 个答案:

答案 0 :(得分:1)

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

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

顺便说一句,我假设你可以从命令行调用b.php而没有任何问题。

答案 1 :(得分:0)

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

答案 2 :(得分:0)

为什么让事情复杂化?只需使用include或require?