Php和python混编实现介绍
需求产生原因:某些使用PHP作为后台语言的网站可能会有调用Python等脚本语言的需求.例如我最近在做的数据处理工作中,由于所需处理的新闻文本数目过大,难以人工分类,所以需要一个文本分类函数,接受传入的文章输出文章应有的分类.然而php却没有可靠的实现方法.这时,就需要php调用python等脚本辅助处理.
解决办法:php提供了许多调用其他脚本或程序的方法,比如exec/system/popen/proc_open/passthru等,每种方法都有适用的情景.对于我的需求,exec/system/passthru是较好的选择
1. exec
原型:string exec ( string command [, array &output [, int &return_var]] )
描述:返回值保存最后的输出结果,而所有输出结果将会保存到$output数组,$return_var用来保存命令执行的状态码(用来检测成功或失败)。
例子:$ret = exec("ls -al", $output, $var);
注意:输出结果会逐行追加到$output中,因此在调用exec之前需要unset($output),特别是循环调用的时候。
//第一个参数表示要执行的python脚本,第二参数用于存储脚本的返回值,第三个参数存储的是状态码(0表示成功调用外部脚本,1 表示调用失败)
exec("python similarity_caculation.py",$array,$ret2);
原型:string system ( string command [, int &return_var] )2. system
描述:执行给定的命令,返回最后的输出结果;第二个参数是可选的,用来得到命令执行后的状态码。
system("python Most_powerful.py",$ret1);
3. passthru
原型:void passthru (string command [, int return_var])
描述:执行给定的命令,但不返回任何输出结果,而是直接输出到显示设备上;第二个参数可选,用来得到命令执行后的状态码。
例子:passthru("ls -al", $var);