2014-09-21 73 views
1

我想要實現2執行函數PHP函數類似實現一個PHP函數

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

裏面現在我想裏面有什麼2 exec函數是爲了實現它,首先,第一後執行一個再被執行,執行第二個。在第一個我想實現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"); 
} 

現在我想什麼是從函數定義傳遞參數給第二蟒蛇論點有點像

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

現在我想聽聽你的解決方案,我已經盡力了,但並沒有設法解決它。謝謝你的幫助和時間。

回答

2

您可以使用&一次在窗口上運行兩個命令。所以,而不是做兩個shell_exec你會做一個。它採取的形式。

shell_exec('CMD1 & CMD2'); 

我相信它會打開一個新的shell每次你做的時候了shell_exec,所以當你嘗試運行Python命令,你實際上是在錯誤的目錄。

如果這不起作用,您可能還會嘗試使用兩個&符號而不是一個。

shell_exec('CMD1 && CMD2'); 

希望這對你有用。

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 &"'); 

但是,我不知道是什麼的相當於「慶典-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將CHDIR爲 'C:\ MyFolder文件' 使用該命令。

+0

如果您打算投票,請添加評論。 – 2014-09-21 01:48:49

+0

這不是我的投票結果。儘管對我沒有什麼幫助,但我已經給了你至少+1的嘗試。 :/ – 2014-09-21 01:59:33

+1

對不起,我無法提供更多幫助,因爲我不使用Windows。第一個代碼就是我在Linux上使用的代碼。我用它的一個版本更新了它,它可能在Windows上工作(猜測)。 – 2014-09-21 02:04:47