PHP_PHP チュートリアルでのヘッセ行列の使用分析について説明します。
Hessianとは
Hessianはcauchoが提供するオープンソースのリモート通信プロトコルです。
バイナリ RPC プロトコルを採用し、HTTP 送信に基づいています。サーバー側で追加のファイアウォール ポートを開く必要はありません。
プロトコルの仕様は公開されており、どの言語でも使用できます。
クライアント/サーバーモードを使用します。
リクエスターはクライアント、サービスプロバイダーはサーバーです。
クライアント呼び出しプロセスは、プロセスパラメータを含む呼び出しメッセージをサービスプロセスに送信し、応答メッセージを待ちます。
サーバー側では、通話情報が届くまでプロセスはスリープ状態のままです。
呼び出しメッセージが到着すると、サーバーはプロセスパラメータを取得し、結果を計算し、応答メッセージを送信し、次の呼び出しメッセージを待ちます。最後に、クライアントはプロセスを呼び出して応答メッセージを受け取り、
処理結果を取得します。 、その後、呼び出しの実行が続行されます。
ヘシアンプロトコルワークフローチャート
クライアントプログラムがサーバー関数を要求します
1.クライアントハンドルを呼び出し、送信パラメータを実行します。
2. ローカルシステムカーネルを呼び出してネットワークメッセージを送信します。
3. メッセージがリモートホストに送信されます。
4. サーバーハンドルがメッセージを取得し、パラメータを取得します。
5.リモート処理を実行します。
サーバー関数は結果をクライアントに返します
1.実行プロセスは結果をサーバーハンドルに返します。
2. サーバーハンドルは結果を返し、リモートシステムカーネルを呼び出します。
3. メッセージはローカルホストに送り返されます。
4. クライアントハンドルはカーネルからメッセージを受け取ります。
5. クライアントはハンドルから返されたデータを受け取ります。
ソースコードの解説付き
1. Web サイトのルート ディレクトリと Hessian のアドレスを含む構成ファイルを参照します。
/**
* ファイル名 : config.php
* 目的 : ヘッセ行列設定ファイル
*
* @package system.core.code をサイト全体に適用
* @copyright Copyright (c) 2012
* @since 1.0
*/
// ルートディレクトリ
define( 'PATH' , dirname(__FILE__) . DIRECTORY_SEPARATOR );
// ヘシアン URL アドレス
define( 'HESSIAN_URL' , 'http://qx.com/server.php' );
// IDE: Zend Studio 9.0
// IDE 拡張機能: Toggle Vrapper
?>
2. サーバーを構成します。
/**
* ファイル名:server.php
*
* 参考文献:
* 1.http://hessian.caucho.com/ (Hessian ホームページ)
* 2.http://hessianphp.sourceforge.net/ (Hessian PHP )
* 3.http://sourceforge.net/projects/hessianphp/ (ヘシアン PHP オープンソース)
* 4.http://baike.baidu.com/view/1859857.htm (シングルケースモード)
*
* @author wubaiqing
* @package system.core はサイト全体に適用されます
* @copyright Copyright (c) 2012
* @since 1.0
*/
require_once ( dirname(__FILE__) . DIRECTORY_SEPARATOR . 'config.php' );
require_once ( PATH . 'extensions/HessianPHP/HessianService.php' );
class HessianServer
{
public function __construct() {}
/**
* 商品詳細 API インターフェース
* @param string $title title
* @param int $price 価格
*/
public function GoodsInfomationApi( $title, $price) {
$price = (int) $price;
return '
ヘッセ行列を使用してリモート メソッドを呼び出します。
タイトル .価格:'.$price;
}
}
$server = new HessianService( new HessianServer() );
//$server->displayInfo();
$server->handle();
// IDE: Zend Studio 9.0
// IDE 拡張機能: Toggle Vrapper
?>
3. HessianService クラスの displayInfo メソッドを通じて、有効な通信メソッドの数を確認できます。
サーバーを構築するためにハンドル メソッドを使用する必要がある場合、「Hessian Requires POST」プロンプトが表示されれば、サーバーは正常に構築されています。
4. ヘッセ行列をカプセル化します
/**
* 类名 : HessianApi
*
* 参考资料 :
* 1.http://hessian.caucho.com/ ( Hessian主页 )
* 2.http://hessianphp.sourceforge.net/ ( Hessian PHP )
* 3.http://sourceforge.net/projects/hessianphp/ ( Hessian PHP开源 )
* 4.http://baike.baidu.com/view/1859857.htm ( 单例模式 )
*
* @author wubaiqing
* @package system.core applied to the whole site
* @copyright Copyright (c) 2012
* @since 1.0
*/
class HessianApi
{
/**
* @var string 接口地址
*/
private $_url = NULL;
/**
* @var result 句柄
*/
private $_handle = NULL;
/**
* @var array 存放单例模式数组
*/
private static $_objects = array();
/**
* 设置URL地址
* 实例化HessianClient类
* 参数 : (1) url地址 , 2
*
* 2.Java调用字段
* @param string $url
*/
public function __construct( $url )
{
$this->setUrl( $url );
$handler = new HessianClient ( $this->getUrl (), $this->getOptions () );
$this->setHandler ( $handler );
}
/**
* @return result $_handle 句柄
*/
public function getHandler() {
return $this->_handle;
}
/**
* 设置句柄
* @param result $_handle
*/
public function setHandler($_handle) {
$this->_handle = $_handle;
}
/**
* 获取URL地址
*/
public function getUrl() {
return $this->_url;
}
/**
* 设置URL地址
* @param string $url
*/
public function setUrl($url) {
$this->_url = $url;
}
/**
* typeMap映射Java等平台对象
* @return array
*/
public function getOptions() {
return array (
'version' => 1,
'saveRaw' => TRUE,
'typeMap' => array(
'JavaNullPointException' => 'java.lang.NullPointerException' ,
'StackTraceElement' => 'java.lang.StackTraceElement')
);
}
/**
* 记录接口调用信息
* @param string $method 调用的方法
* @param string $returnMsg 需要记入log的文字信息
*/
public function resultLog( $method , $returnMsg )
{
$logPath = PATH.'/runtime/hessian/';
if( !is_dir( $logPath ) ) {
mkdir($logPath,0777);
}
error_log(date('Ymd H:i:s', time()) . '|' . $method . '|' . $returnMsg."\n", 3, $logPath . date('Y-m-d', time()) . '.log');
}
* 静的ファクトリーメソッド。単一 URL の一意のインスタンスを生成します
* @param string $url
* /
Public static Function Start ($ URL) {
$ key = md5 ($ url)
if (ISSET (SELF :: $ _ Key])) {
Return self::$ _Objects [$ key];
クラス JavaNullPointException は例外 {} を拡張します
クラス StackTraceElement は例外 {} を拡張します
// IDE: Zend Studio 9.0
// IDE 拡張機能: Toggle Vrapper
コードをコピーします
コードは次のとおりです:
/** * クラス名 : Goods * 継承クラス : HessianApi * 目的 : server.php メソッドの呼び出し *
* @copyright Copyright (c) 2012
* @since 1.0
*/
class Goods extends HessianApi
{
/**
* インターフェースアドレスを設定します
* @param string $url
*/
public function __construct( $url) {
parent::__construct( $url);
}
/**
* 製品情報を取得します
* server.php ファイルの GoodsInfomationApi メソッドを呼び出します
* @param string $title title
* @param string $title 価格
* /
public function getGoodsinfomation ($ Title, $ Price) {
// Java プラットフォームの hessian サービスで型を指定する必要がある場合は、パラメータ、特に整形手術と string = (int) を渡します。 $price;
$result = $this->getHandler()->goodsInfomationApi( $title, $price);
$this->resultLog( 'getGoodsInfomation' , 'インターフェイスにアクセスしますが、インターフェイスはロジック検証されません。 ');
$ の結果を返します。
// IDE: Zend Studio 9.0
// IDE Extension: Toggle Vrapper
?>
6. サーバーインターフェイスをリクエストするためにindex.phpを変更します
コードをコピーします
/**
** 参考文献:
* 1.http://hessian.caucho.com/ (Hessian ホームページ)* 2.http://hessianphp.sourceforge.net/ (Hessian PHP )
*/
require_once ( dirname(__FILE__) . DIRECTORY_SEPARATOR .'config.php' );
// ヘシアン拡張ファイルと設定ファイル
require_once ( PATH . 'extensions/HessianPHP/HessianClient.php' );
require_once ( PATH . 'class/HessianApi.php' );
//server.phpメソッドを呼び出す
require_once (PATH . 'class/Goods.php');
// データを取得するためにインターフェースをリクエストします
$goods = new Goods( HESSIAN_URL );
//製品タイトルと価格を設定します。
$title = '北京モバイル リチャージ プラットフォーム';
// ヘシアンプロトコルをリクエストします
$goodsInfo = $goods->getGoodsInfomation( (string) $title , (int) $price );
//リクエスト結果の印刷
echo ( $goodsInfo );
// IDE 拡張機能: Toggle Vrapper

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

ファイルのアップロードを行うには、フォーム ヘルパーを使用します。ここではファイルアップロードの例を示します。

CakePHP は、PHP 用のオープンソース フレームワークです。これは、アプリケーションの開発、展開、保守をより簡単にすることを目的としています。 CakePHP は、強力かつ理解しやすい MVC のようなアーキテクチャに基づいています。モデル、ビュー、コントローラー

Visual Studio Code (VS Code とも呼ばれる) は、すべての主要なオペレーティング システムで利用できる無料のソース コード エディター (統合開発環境 (IDE)) です。 多くのプログラミング言語の拡張機能の大規模なコレクションを備えた VS Code は、
