使用以下代码我可以调用php脚本并将一些变量传递给它
$cmd = 'php -f C:/wamp/www/np/myphpscript.php '.$var1;
exec($cmd);
这样我的被调用的脚本可以工作,但是,我需要该进程在后台,我不想等待脚本完成,有没有办法在Windows上使用wamp?
一直在做一些阅读,有些在命令的末尾添加&
,或者> NUL
,现在我注意到它们中的一些用于linux,是否有这样的命令用于Windows上的wamp?如果有请分享
答案 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
)
我希望这会有所帮助!稍后见!