ICE for PHP 安装和使用指南
| |
Posted in PHP on 2010/04/29 / 引用(0)
介绍
ICE 的官网是http://www.zeroc.com。ICE(Internet Communications Engine 网络通讯引擎),是由Corba原核心成员开发的一个开源中间件,据称其各种性能完全优于Corba。


1、下载地址
http://www.zeroc.com/download/Ice/3.2/Ice-3.2.0.tar.gz
http://www.zeroc.com/download/Ice/3.2/IcePHP-3.2.0.tar.gz

2、安装
2.1 安装Ice for C++ 3.2.0
    $tar xzvf Ice-3.2.0.tar.gz
    $cd Ice-3.2.0
    编辑文件config/Make.rules,修改一些参数(可以不修改,按默认值安装)
    $make && make install
    一般这一步不会出问题的,但是编译时间较长,
    如果出问题,一般是缺少一些库,参照出错信息安装相应的库。
   默认安装地址在 /opt/Ice-3.2.0

2.2 安装IcePHP
    $tar xzvf IcePHP-3.2.0.tar.gz
    $cd IcePHP-3.2.0
    $vi config/Make.rules  
       修改 PHP_HOME                ?= /usr/local/php  #php的安装目录,如果已经编译安装过了PHP的话。
    $export ICE_HOME=/opt/Ice-3.2.0 #这一步很重要,否则后面编译会出错,报没有找到IceUtil::stringToInt64()方法
    $make && make install
    
   编译过程我还遇到如下错误
  

Marshal.cpp:1932: error: 'ZVAL_ADDREF' was not declared in this scope
  

   通过Google,ICE的论坛有技术支持,解决办法是在 Marshal.cpp将ZVAL_ADDREF 改成 Z_ADDREF_P。这种错误我不知道笔误还是故意,希望在以后的版本会修复这个bug。

   安装完成后,会在/opt/下出现IcePHP-3.2.0目录,lib/IcePHP.so就是下面要用到的。

2.3 配置php.ini
   vi /etc/php.ini

在任意位置增加两行:
extension_dir = /opt/IcePHP-3.2.0/lib/
extension=IcePHP.so
ice.profiles = /etc/ice.prop

#也可以将IcePHP.so拷贝到原来的php的extension_dir目录

2.4.准备/etc/ice.prop
vi /etc/ice.prop

加入以下两行:

[profile_demo]
ice.slice=/usr/local/apache2/htdocs/hello/Hello.ice

这两行的意思就是,增加一个ice的配置,名字是profile_demo,slice文件是…Hello.ice



3.创建一个php client
方法一:
将ice文件编译成php文件
举例,
$ /opt/Ice-3.2.0/bin/slice2php Printer.ice #生成一个Printer.php文件

编写一个client.php例子

<?php?
ini_set('include_path',ini_get('include_path') . PATH_SEPARATOR . '/opt/Ice-3.2.0/php');
//Ice.php是
require 'Ice.php';?
require 'Printer.php';?
?
$ic = null;?
try?
{?
$ic = Ice_initialize();?
$base = $ic->stringToProxy("SimplePrinter:default -p 10000");?
$printer = Demo_PrinterPrxHelper::checkedCast($base);?
if(!$printer)?
throw new RuntimeException("Invalid proxy");?
?
$printer->printString("Hello World!");?
}?
catch(Exception $ex)?
{?
echo $ex;?
}?
?
if($ic)?
{?
// Clean up?
try?
{?
$ic->destroy();?
}?
catch(Exception $ex)?
{?
echo $ex;?
}?
}?
?>





4、ICE在PHP应用中的缺点,无法使用PHP编写Server端,其实这也是PHP的一个缺陷——没有完善的多进程和多线程管理机制。因此,Server端可以采用ICE所支持的其它语言进行编写,比如JAVA/C++/VB/PYTHON等。




参考:

“先进的互联互通技术”–使用ice联通php和java

ICE-高效的中间件平台
ICE的PHP扩展(翻译) 之一 概述和简介


This entry comes from 本站原创 and has been read for 312 times.It is tagged with , , , , , .
0 Responses
发表评论

昵称

网址

电邮

OpenID登入 高级选项 表情