PHP 调用 Python 后端有很多种方法,比如使用 exec() 函数,比如使用 XMLRPC 函数,比如使用 SOCKET,亦或是自己使用 WSGI 构建一个后端。当然不管什么方法,能做出东西就是 OK 的,这里使用 PHPRPC 协议进行实现。
Python服务端实现
此处使用3.0.2版本PHPRPC 并修改了 /src/init.py 中第 761 行的监听地址,将其修改指向 127.0.0.1:8765
#!/usr/bin/env python
from phprpc import PHPRPC_Server
def getinfo(vid, p):
return str(vid) + str(p)
server = PHPRPC_Server()
server.add(getinfo)
server.debug = True
server.start()
PHP客户端实现
使用3.0.2客户端 请将这些文件放置于同一目录 bigint.php compat.php phprpc_client.php xxtea.php dhparams.php
如果出现 gzdecode 重声明的错误,请修改 compat.php ,使用 if(!function_exists(‘gzdecode’)){} 包裹住原来的函数 function gzdecode($data, &$filename = ‘’, &$error = ‘’, $maxlength = null)
<?php
//开启错误显示
ini_set('display_errors','1');
error_reporting(E_ALL);
include ("phprpc_client.php");
//从URL中读取参数
$vid = $_GET['vid'];
if($vid){
echo $vid;
} else{
$vid = -1;
}
$p = $_GET['p'];
if($p){
echo $p;
} else{
$p = -1;
}
//指向Py端的监听端口
$client = new PHPRPC_Client("http://127.0.0.1:8765");
//使用RPC端口上对应服务端的函数
echo $client->getinfo($vid, $p);
?>