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 にアップグレードする方法について説明します。

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

あなたが経験豊富な PHP 開発者であれば、すでにそこにいて、すでにそれを行っていると感じているかもしれません。あなたは、運用を達成するために、かなりの数のアプリケーションを開発し、数百万行のコードをデバッグし、大量のスクリプトを微調整してきました。

このチュートリアルでは、PHPを使用してXMLドキュメントを効率的に処理する方法を示しています。 XML(拡張可能なマークアップ言語)は、人間の読みやすさとマシン解析の両方に合わせて設計された多用途のテキストベースのマークアップ言語です。一般的にデータストレージに使用されます

JWTは、JSONに基づくオープン標準であり、主にアイデンティティ認証と情報交換のために、当事者間で情報を安全に送信するために使用されます。 1。JWTは、ヘッダー、ペイロード、署名の3つの部分で構成されています。 2。JWTの実用的な原則には、JWTの生成、JWTの検証、ペイロードの解析という3つのステップが含まれます。 3. PHPでの認証にJWTを使用する場合、JWTを生成および検証でき、ユーザーの役割と許可情報を高度な使用に含めることができます。 4.一般的なエラーには、署名検証障害、トークンの有効期限、およびペイロードが大きくなります。デバッグスキルには、デバッグツールの使用とロギングが含まれます。 5.パフォーマンスの最適化とベストプラクティスには、適切な署名アルゴリズムの使用、有効期間を合理的に設定することが含まれます。

文字列は、文字、数字、シンボルを含む一連の文字です。このチュートリアルでは、さまざまな方法を使用してPHPの特定の文字列内の母音の数を計算する方法を学びます。英語の母音は、a、e、i、o、u、そしてそれらは大文字または小文字である可能性があります。 母音とは何ですか? 母音は、特定の発音を表すアルファベットのある文字です。大文字と小文字など、英語には5つの母音があります。 a、e、i、o、u 例1 入力:string = "tutorialspoint" 出力:6 説明する 文字列「TutorialSpoint」の母音は、u、o、i、a、o、iです。合計で6元があります

静的結合(静的::) PHPで後期静的結合(LSB)を実装し、クラスを定義するのではなく、静的コンテキストで呼び出しクラスを参照できるようにします。 1)解析プロセスは実行時に実行されます。2)継承関係のコールクラスを検索します。3)パフォーマンスオーバーヘッドをもたらす可能性があります。

PHPの魔法の方法は何ですか? PHPの魔法の方法には次のものが含まれます。1。\ _ \ _コンストラクト、オブジェクトの初期化に使用されます。 2。\ _ \ _リソースのクリーンアップに使用される破壊。 3。\ _ \ _呼び出し、存在しないメソッド呼び出しを処理します。 4。\ _ \ _ get、dynamic属性アクセスを実装します。 5。\ _ \ _セット、動的属性設定を実装します。これらの方法は、特定の状況で自動的に呼び出され、コードの柔軟性と効率を向上させます。
