Mac OS X 環(huán)境下使用 MacPorts 安裝 PHP 之后,開啟了 Ice php 擴展,可以讓 PHP 支持 Ice 中間件的對象通信協(xié)議。如果你的應用需要在不同的往來機器之間,通過網(wǎng)絡傳遞對象,那么 Ice 是一個不錯的輕量級中間件方案。
下面以一個簡單的貌似如何實現(xiàn)一個 Ice Middleware Client 為例。
$post_name = "myPost"; $post_search = new MyStruct; $post_search->title = "Post Title"; $params[0] = $post_search; $params[1] = 5; // 設置返回的記錄數(shù)為5 try { $ic = Ice_Initialize(); $base = $ic->stringToProxy("MyPost@IceDiscovery -h 192.168.1.10 -p 10000"); $userMangerClient = UserManagerPrxHelper::checkedCast($base); $postList = $userMangerClient->findPost($params); if(count($postList) === 0) { print(“沒有查詢到任何博客內容”); } else { foreach($postList AS $post) { echo $post->title . "\n"; } } } catch(Exception $e) { echo $e; } $postObj = null;
首先上面的代碼和純 PHP 的在線放代碼差不多。我們引入商業(yè)的 Ice Discovery 和 Ice PHP 擴展,就可以在 PHP 里輕松編寫 Ice Middleware Service。
Ice PHP 擴展提供了 Proxy、Method 和 Helper 機制來簡化新服務的編寫。Proxy 是為遠程對象提供一個本地代理的一個類,用來訪問遠程的對象。Method 是構建指向對端的消息傳遞一些指定的參數(shù),可以在服務接口中應用。
我們上面的例子,它的工作流程是客戶端請求轉發(fā)給服務器,服務器再把請求的詳細信息提交給 Ice Discovery,Ice Discovery 內部處理端口和 ip,然后最終連接遠程服務器,再把返回給客戶端。這種方式雖然繁瑣但是足夠解決大量數(shù)據(jù)的傳遞問題。
總之,設置好和遠程服務器之間的通信通道,我們就可以使用 Ice 通信協(xié)議來指定服務間傳輸?shù)臄?shù)據(jù)格式。最后將服務引入客戶端代碼,建立代理類,就可以愉快的調用了。
上一篇mac hash php
下一篇ajax 無刷新加載圖片