日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > php >内容正文

php

PHP中间件--ICE

發(fā)布時間:2024/9/20 php 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 PHP中间件--ICE 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

ICE(Internet Communications Engine)是Zeroc提供的一款高性能的中間件。使用ICE能使得php(或c++,java,python)與java,c++,.net,python等進(jìn)行交互。基于ICE可以實現(xiàn)電信級的解決方案。

?

1第一個問題:為什么要使用中間件?

設(shè)想一個這樣的場景:對于一個大型網(wǎng)站來說,往往有很多個web服務(wù)器,每個web服務(wù)器都存在很多對于數(shù)據(jù)庫的操作。如果直接在php程序上直接操作數(shù)據(jù)庫,那么勢必要在每臺web服務(wù)器都配置數(shù)據(jù)庫的用戶名,密碼等信息,這是極度不安全的。并且如果我們要統(tǒng)一對數(shù)據(jù)庫的操作進(jìn)行管理和修改等,那么久要去每個web服務(wù)器上修改。因此,這時候中間件就產(chǎn)生了。它是基于SOA(面向服務(wù)架構(gòu))的思想,將對數(shù)據(jù)庫的操作統(tǒng)一成一個服務(wù),放置于一臺服務(wù)機上,每個web服務(wù)器要對數(shù)據(jù)庫進(jìn)行操作,就可以直接訪問這個提供中間件服務(wù)的服務(wù)器。

還有一點,考慮到性能問題,這里的提供服務(wù)的機子我們不使用html和xml傳輸數(shù)據(jù),一般使用TCP,UDP這層的通信。

因此ICE就是現(xiàn)在非常流行的網(wǎng)站開發(fā)中間件之一。

?

關(guān)于更多理解為何使用中間件的原因這里有兩個鏈接:

http://blog.csdn.net/phphot/archive/2009/04/18/4089806.aspx

http://hi.baidu.com/xdh2571/blog/item/8f01fafc4debfc89b801a04b.html

?

2 對于ICE,它是怎么樣通信結(jié)構(gòu)?

ICE有分為提供服務(wù)的一方Server和尋求服務(wù)的一方Client,兩臺機子上都需要安裝ICE組件,他們的通信結(jié)構(gòu)如下:

?

Client端應(yīng)該事先知道Server端能提供的服務(wù)是什么,有什么格式?這就是圖中的Proxy Code,在Proxy Code中定義好了類和接口。Server端中接口定義的就是Skeleton,具體實現(xiàn)接口的是Server Application,Server Application可以是C++,java,C#等寫的,但是ICE不提供PHP寫Server端。

?

3 安裝ICE

安裝環(huán)境: CentOS

1) cd /etc/yum.repos.d/ wget http://www.zeroc.com/download/Ice/3.4/rhel5/zeroc-ice.repo

2)

編輯zeroc-ice.repo:

[zeroc-ice]

name=Ice 3.4 for Red Hat Enterprise Linux ?

basearch

baseurl=http://www.zeroc.com/download/Ice/3.4/rhel5/$basearch

enabled=1

gpgcheck=1

gpgkey=http://www.zeroc.com/download/RPM-GPG-KEY-zeroc-release

3)

使用yum安裝

yum install ice* db46* mcpp-devel

4)

確認(rèn)機子是否安裝g++,如果沒有,則安裝:

yum install gcc-c++ libstdc++-devel

?

4 寫一個ICE例子,目的:Client端每調(diào)用一次服務(wù),Server端就打出一個"hello world”;

?

基本環(huán)境:由于是實驗?zāi)康?#xff0c;我僅僅將Client和Server同當(dāng)做一臺CentOS機子

?

A 建文件夾: mkdir ice_demo

?

B 創(chuàng)建文件Printer.ice,這個.ice文件是ICE的slice文件,在其中定義了服務(wù)的對象和接口

module Demo {
interface Printer {
void printString(string s);
};
};

?

C #slice2cpp Printer.ice //產(chǎn)生出了Printer.h和Printer.cpp兩個文件

D 創(chuàng)建Server.cpp

#include <Ice/Ice.h>
#include <Printer.h>
?
using namespace std;
using namespace Demo;
?
class PrinterI : public Printer {
public:
virtual void printString(const string& s,
const Ice::Current&);
};
?
void?
PrinterI::
printString(const string& s, const Ice::Current&)
{
cout << s << endl;
}
?
int
main(int argc, char* argv[])
{
int status = 0;
Ice::CommunicatorPtr ic;
try {
ic = Ice::initialize(argc, argv);
Ice::ObjectAdapterPtr adapter
= ic->createObjectAdapterWithEndpoints(
"SimplePrinterAdapter", "default -p 10000");
Ice::ObjectPtr object = new PrinterI;
adapter->add(object,
ic->stringToIdentity("SimplePrinter"));
adapter->activate();
ic->waitForShutdown();
} catch (const Ice::Exception& e) {
cerr << e << endl;
status = 1;
} catch (const char* msg) {
cerr << msg << endl;
status = 1;
}
if (ic) {
try {
ic->destroy();
} catch (const Ice::Exception& e) {
cerr << e << endl;
status = 1;
}
}
return status;
}

E

#c++ -I. -I$ICE_HOME/include -c Printer.cpp Server.cpp

# c++ -o server Printer.o Server.o \ -L$ICE_HOME/lib -lIce –lIceUtil?? //在同文件夾下會出現(xiàn):server執(zhí)行文件

?

F #slice2php Printer.ice

G 創(chuàng)建Client.php

<?php
require 'Ice.php';
require 'Printer.php';

ic?=?null;
?????try

?????{

ic = Ice_initialize();
?ic->stringToProxy("SimplePrinter:default -p 10000");
???

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;
}
}
?>

H

打開一個終端運行 #./server

打開另一個終端運行 php Client.php

?

發(fā)現(xiàn)每運行一次Client.php,第一個終端就打出一個Hello World. ICE 運行成功.

?

?

附注:大型的網(wǎng)站對于ICE的使用是很多的。比如需要實現(xiàn)一個分詞搜索的功能使用lucence,對數(shù)據(jù)庫的訪問,對memcached的訪問都可以直接在ICE中寫一個服務(wù)來提供統(tǒng)一管理和使用

?

?

作者:軒脈刃(yjf512)
出處:(http://www.cnblogs.com/yjf512/)
版權(quán)聲明:本文的版權(quán)歸作者與博客園共有。歡迎轉(zhuǎn)載閱讀,轉(zhuǎn)載時須注明本文的詳細(xì)鏈接。?

?

[參考文章]

http://blog.csdn.net/phphot/archive/2009/04/18/4089806.aspx

http://hi.baidu.com/xdh2571/blog/item/8f01fafc4debfc89b801a04b.html

http://www.zeroc.com/

(特別是里面的Document)

http://blog.csdn.net/cnhome/archive/2008/11/18/3331279.aspx


來源:https://www.cnblogs.com/yjf512/archive/2011/06/07/2074554.html

總結(jié)

以上是生活随笔為你收集整理的PHP中间件--ICE的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产在线xxxx | a网址 | 久久爱一区二区 | 国产专区av | 天堂av网手机版 | 欧美日韩一卡二卡 | 久草福利资源在线观看 | 午夜视频在线免费看 | 国产精品va在线观看无码 | 国产精品视频一区二区三区, | 男人的天堂视频 | 欧美乱大交xxxxx春色视频 | 久久国产精品久久久久久电车 | 国产亚洲精品久久久久久青梅 | 影音先锋亚洲成aⅴ人在 | 成人黄色国产 | 拔萝卜91 | 无码国产精品高潮久久99 | 亚洲精久久 | 国产永久免费视频 | 国产精品亚洲AV色欲三区不卡 | 日韩激情视频在线观看 | 真实的中国女人做爰 | 伦av综合一区 | 欧美男人亚洲天堂 | 欧美大片在线看 | 开心春色激情网 | 黄色片在线免费观看 | 黄色一级片免费播放 | 草草在线观看 | 香蕉视频免费在线播放 | 国产亚洲欧美日韩精品一区二区三区 | 欧美专区 日韩专区 | 午夜精品久久久久久久96蜜桃 | 精品1卡二卡三卡四卡老狼 日韩三级网 | 国产精品成av人在线视午夜片 | 亚洲美女色视频 | 日本a级c片免费看三区 | 欧美性猛交xxxⅹ富婆 | 久久黄色影视 | 丁香婷婷六月天 | 在线观看国产福利 | 国产淫| 亚洲一区免费视频 | 九色91popny蝌蚪| 久久精品国产成人av | 看av网址| 中文字幕Av日韩精品 | 女人天堂网 | 天天干天天干天天操 | 天天操免费视频 | 亚欧毛片| 欧美色图中文字幕 | 国产美女又黄又爽又色视频免费 | 国产日韩欧美中文字幕 | 国产一区精品在线 | 嫩草视频一区二区三区 | 做a爰小视频 | 国产精品香蕉 | 骚五月| 黄色一级免费大片 | 精品国产999久久久免费 | 国产麻豆成人传媒免费观看 | 日韩天堂在线观看 | 污网站免费在线观看 | 91成人在线观看喷潮动漫 | 色婷婷午夜| www.av在线播放 | 波多野结衣视频免费看 | 亚洲精品在线观看视频 | 国产福利一区二区 | 激情视频亚洲 | 最新中文字幕在线播放 | h视频在线免费看 | 亚洲精品视频中文字幕 | 精品人妻伦一区二区三区久久 | 国产性xxxx高清 | 日韩极品视频在线观看 | 手机看片欧美日韩 | 麻豆传媒观看 | 日韩欧美福利视频 | 中出少妇 | 久久久久国产精品一区 | 97久久人国产精品婷婷 | 国产精品成人免费一区二区视频 | 色老汉视频 | 免费观看黄色网址 | 一区视频在线播放 | 一本色道久久88综合日韩精品 | 日本啪啪网 | 日韩射| 天天插天天操天天干 | 婷婷综合亚洲 | 国产首页 | 中文字幕在线观看视频一区二区 | 岛国av一区二区三区 | 无码人妻精品一区二区蜜桃色欲 | 日韩欧美视频一区二区 | 日日夜夜爽爽 |