在php函数中实现2个exec函数

时间:2014-09-21 00:51:22

标签: php

我想在php函数中实现2个exec函数,比如

public function definition($source){
     shell_exec("");
     shell_exec("");
}

现在我想要的是按顺序实现它,首先执行一个然后执行第一个,执行第二个。在第一个我想在Windows下实现cd(移动到文件夹),如

    public function definition($source){
         shell_exec("cd C:\myfolder");
         shell_exec("");
    }
enter code here

在第二个我想用两个参数运行python脚本,第一个是python脚本,它位于我刚刚移动到的文件夹中,第二个是位于同一文件夹中的图像,像

public function definition($source){
     shell_exec("cd C:\myfolder");
     shell_exec("python myScript.py myImage.jpg");
}

现在我想将参数从函数定义传递给第二个python参数,比如

public function definition($source){
     shell_exec("cd C:\myfolder");
     shell_exec("python myScript.py".$source);
}

现在我想听听你对我所需要的解决方案,我已经尽了最大努力,但没有设法解决它。谢谢你的帮助和时间。

2 个答案:

答案 0 :(得分:2)

您可以使用&在Windows上一次运行两个命令。所以不要做两个shell_exec而是做一个。它采取的形式。

shell_exec('CMD1 & CMD2');

我相信每次你执行shell_exec都会打开一个新shell,所以当你尝试运行你的python命令时,你实际上是在错误的目录中。

如果这不起作用,您也可以尝试使用两个&符号而不是一个。

shell_exec('CMD1 && CMD2');

希望这适合你。

答案 1 :(得分:0)

在Linux上你可以这样做:

$cmd = 'command to run';
exec( 'bash -c "nohup $cmd > /dev/null 2>&1 &"' );

只有在exec命令完成后才会进行此操作。

我不知道你是否可以在Windows上执行此操作,但如果可以,最终部分可能会像:

$cmd = 'command to run';
exec( 'bash -c "$cmd > nul 2>&1 &"' );

但是,我不确定' bash -c' 的等价物是什么。

可能的Windows解决方案:

$shell = new COM( "WScript.Shell" );
$shell->run( "your command", 0, false );

你也可以这样做:

public function definition( $source )
{
     chdir( 'C:\myfolder' );
     shell_exec( 'python myScript.py' . $source );
     # chdir back to your script directory if needed
}

我不确定PHP是否会转向C:\ myfolder'使用该命令。