"; 这是序列化后的请求数据
$send_len = 0;
do
{
//发送
if (($sends = socket_write($socket, $request, strlen($request))) === false)
{
throw new Exception("[PPython Error] socket write error.", SOCKET_ERROR);
}
$send_len += $sends;
$request = substr($request, $sends);
}while ($send_len < $req_len);
//接收
$response = "";
while(true)
{
$recv = "";
if (($recv = socket_read($socket, 1400)) === false)
{
throw new Exception("[PPython Error] socket read error.", SOCKET_ERROR);
}
if ($recv == "")
{
break;
}
$response .= $recv;
//echo "{$response}
";
}
//关闭
socket_close($socket);
$rsp_stat = substr($response, 0, 1); //返回类型 "S":成功 "F":异常
$rsp_msg = substr($response, 1); //返回信息
//echo "返回类型:{$rsp_stat},返回信息:{$rsp_msg}
";
if ($rsp_stat == "F")
{
//异常信息不用反序列化
throw new Exception("[PPython Error] Receive Python exception: ".$rsp_msg, LAJP_EXCEPTION);
}
else
{
if ($rsp_msg != "N") //返回非void
{
//反序列化
return unserialize($rsp_msg);
}
}
}
?>