需求產(chǎn)生原因:某些使用PHP作為后臺(tái)語(yǔ)言的網(wǎng)站可能會(huì)有調(diào)用Python等腳本語(yǔ)言的需求.例如我最近在做的數(shù)據(jù)處理工作中,由于所需處理的新聞文本數(shù)目過大,難以人工分類,所以需要一個(gè)文本分類函數(shù),接受傳入的文章輸出文章應(yīng)有的分類.然而php卻沒有可靠的實(shí)現(xiàn)方法.這時(shí),就需要php調(diào)用python等腳本輔助處理.
解決辦法:php提供了許多調(diào)用其他腳本或程序的方法,比如exec/system/popen/proc_open/passthru等,每種方法都有適用的情景.對(duì)于我的需求,exec/system/passthru是較好的選擇
1. exec
原型:string exec ( string command [, array &output [, int &return_var]] )
描述:返回值保存最后的輸出結(jié)果,而所有輸出結(jié)果將會(huì)保存到$output數(shù)組,$return_var用來(lái)保存命令執(zhí)行的狀態(tài)碼(用來(lái)檢測(cè)成功或失敗)。
例子:$ret = exec("ls -al", $output, $var);
注意:輸出結(jié)果會(huì)逐行追加到$output中,因此在調(diào)用exec之前需要unset($output),特別是循環(huán)調(diào)用的時(shí)候。
//第一個(gè)參數(shù)表示要執(zhí)行的python腳本,第二參數(shù)用于存儲(chǔ)腳本的返回值,第三個(gè)參數(shù)存儲(chǔ)的是狀態(tài)碼(0表示成功調(diào)用外部腳本,1 表示調(diào)用失?。?/p>
exec("python similarity_caculation.py",$array,$ret2);
原型:string system ( string command [, int &return_var] )2. system
描述:執(zhí)行給定的命令,返回最后的輸出結(jié)果;第二個(gè)參數(shù)是可選的,用來(lái)得到命令執(zhí)行后的狀態(tài)碼。
system("python Most_powerful.py",$ret1);
3. passthru
原型:void passthru (string command [, int return_var])
描述:執(zhí)行給定的命令,但不返回任何輸出結(jié)果,而是直接輸出到顯示設(shè)備上;第二個(gè)參數(shù)可選,用來(lái)得到命令執(zhí)行后的狀態(tài)碼。
例子:passthru("ls -al", $var);