php exec在后台与WAMP在Windows上

时间:2015-06-19 21:46:30

标签: php

使用以下代码我可以调用php脚本并将一些变量传递给它

$cmd = 'php -f C:/wamp/www/np/myphpscript.php '.$var1;


exec($cmd); 

这样我的被调用的脚本可以工作,但是,我需要该进程在后台,我不想等待脚本完成,有没有办法在Windows上使用wamp? 一直在做一些阅读,有些在命令的末尾添加&,或者> NUL,现在我注意到它们中的一些用于linux,是否有这样的命令用于Windows上的wamp?如果有请分享

3 个答案:

答案 0 :(得分:0)

不知道你在跑什么,以及你是否得到了对你命令的回应。但是,如果为每个命令打开一个选项卡,也许会有所帮助。因此,您可以看到每个正在运行的脚本的响应,最后您可以调用javascript来关闭选项卡。

答案 1 :(得分:0)

编辑:由于exec()命令等待程序完成执行的方式,使用vanilla exec()执行此操作非常困难。我遇到了these solutions,这个应该有效:

$rshell = new COM("WScript.Shell");
$rexec = $rshell->Run("php -f C:/wamp/www/np/myphpscript.php ".$var1, 0, false);

WScript.Shell->Run命令有3个参数:命令(您可以选择添加输出重定向),窗口模式(0 =隐藏),等待它等待完成。因为第3个参数是false,所以这个PHP应该立即返回。

原始解决方案:正如this post建议的那样,您应该尝试START /B cmd。它几乎与Linux等价cmd &,因为它在后台异步运行命令,无需用户交互或打开新shell。

因为这将立即返回,PHP不会等待它完成,exec()命令将不会收到任何输出。相反,尝试使用shell输出重定向。您给出的PHP代码如下所示:

$cmd = 'start /b "" php -f C:/wamp/www/np/myphpscript.php '.$var1.' >C:/wamp/www/np/output.txt';
exec($cmd); 

答案 2 :(得分:0)

  

您必须在Windows环境中设置变量php!

如果您已经这样做,请跳过教程步骤:

 1. Open:
        My Computer => Properties => Change Settings

 2. Select the tab: Advanced

 3. Click Environment Variables: Variable system

 4. Click the button New
        Add the name of the environment variable. Example = php
        Add the path to executable php.exe. Example = D:\xampp\php\php.exe

创建一个文件myscript.php

  

variariaveis $ argc $ argv 是本机php。

     

你会注意到$ argc总是带有相同的值   在任何情况下,呼叫计数( $ argv )的结果 $ argc 是标准   使用并且在内存中快几毫秒(如果那样的话)   你的剧本在性能上有所不同。)

//\n skip line
echo "\n\n";
//echo test debug
echo "Print Total Args : ";
//Print return variavel $argc
print_r($argc);
//\n skip line
echo "\n\n";
//echo test debug
echo "Print Array Args : \n\n";
//Print return variavel $argv
print_r($argv);
echo "\n";
// You can retrieve the arguments in the normal way.
$myvar_count = $argc;
$myvar_array_args = $argv;

或者如果你想设置不是环境变量,只需调用路径

Example: D:\xampp\php\php.exe myscript.php argument1 2 3 4 5

在Windows中重新提示

Total Args : 5

Array Args :

Array
(
    [0] => test.php
    [1] => argumento1
    [2] => 2
    [3] => 3
    [4] => 4
)
  

我希望这会有所帮助!稍后见!