PHP で XML テクノロジーを使用してリモート サービスを構築する
将来の Web はサービス中心の Web になり、xml_rpc 標準によりサービスの作成と適用が非常に簡単になります。この記事では、xml_rpc 標準とその PHP 実装を紹介し、例を通じて PHP で xml_rpc サービスとクライアント プログラムを開発する方法を示します。
1. サービス Web
コンテンツ プロバイダーが採用するシンプルな手法から、uddi の将来のビジョン (普遍的な記述、発見、統合) まで、業界では「サービス Web」について多くの説明やコメントが行われています。 Web の初期段階では、Web は単なる文書の収集および配布センターであり、閲覧可能な情報のみを提供していました。 Web の発展に伴い、Web 上でのサービスの実行はますます魅力的になってきています。将来的には、Web は企業が顧客や他の企業に便利なサービスを提供する媒体となるでしょう。 b2b モデルと b2c モデルのコラボレーションは、サービス Web とみなすことができます。
非常に重要な質問は、Web 上でどのようなサービスを提供できるかということです。 Web は多くのサービスを提供できますが、その中には現在すでに使用されているサービスもあれば、近い将来登場するサービスもあります。問題を説明するために、Web を通じて提供できるサービスの小さなリストを以下に示します:
トピック指向の垂直型検索エンジン。
ユーザーが情報を見つけるためのナレッジベース。
ユーザーが質問できるエキスパートシステム。
銀行サービス。
ニュースおよび情報公開サービス。
デジタル決済関連サービス。
グラフィック処理サービス。
健康とウェルネスのサービス。
では、企業や組織が Web を通じてサービスを提供する正しい方法は何でしょうか?これは非常に重要な質問です。現在、HTML インターフェイスを提供するサービスや、ドキュメントの形式でサービスを提供するサービスがありますが、サービス インターフェイスの背後には何が隠されているのでしょうか。 Web の覇権を争っているのは Web ブラウザだけではありません。携帯電話、ハンドヘルド デバイス、電子レンジなどのデバイスはすべて、Web へのアクセス、データベースのクエリ、データの変換、情報の抽出などを望んでいます。真のサービス Web を実現するには、プレゼンテーション層 (html) の下に別の層が必要です。
2. xml_rpc 標準
xml は、おそらく過去 10 年間で最も重要な標準であり、企業がサービス環境を構築するための基礎となります。サービス Web を構築するには、xml_rpc 標準を学ぶ必要があります。xml_rpc は Web 上にサービスを配置するのに役立つだけでなく、xml_rpc がすでに確立されている標準であり、簡単に採用できるためです。 B2Bサービスでは、サービスを提供するための基準が非常に重要であり、その基準を共同で遵守する企業は、他社が提供するサービスを活用することで急成長を遂げることができます。真にサービスを提供する Web がさまざまな民間サービス標準に基づいて構築できることを想像することは不可能です。サービスには従うことができる標準が必要です。
xml_rpc は、インターネット分散処理の標準です。 rpc は、リモート プロシージャ コールの略語で、他のマシン上に存在し、他の言語で記述されたプロシージャを呼び出すために使用されるリモート呼び出しメカニズムです。リモート プロシージャ コールは、分散コンピューティングの重要な柱です。たとえば、分散コンピューティング環境では、他のマシン上で実行される加算および減算演算を実行するプロセスを見つけて利用できます。加算演算を実行するプロセスは APL で記述され、減算演算を実行するプロセスは rs6000 マシン上で実行されます。おそらく C で書かれており、Unix 上で実行されている可能性があります。このような分散計算機を使用したい他の開発者もそれらを使用することも、別のより優れた計算機を選択することもできます。
RPC ではプロシージャが最も重要なコンポーネントであり、サーバーはクライアントが呼び出すためのプロセスを提供します。プロシージャはパラメータを受け取り、結果を返すことができます。 xml_rpc は、プロトコル キャリアとして http を使用し、データを送受信するための XML ボキャブラリを通じて rpc メカニズムを実装します。 xml_rpc サーバーは、xml_rpc 要求を受信し、xml_rpc 応答を返します。xml_rpc クライアント プログラムは、xml_rpc 要求を送信し、xml_rpc 応答を受信します。サーバーとクライアントは、xml_rpc 標準の要件に従って応答と要求を処理する必要があります。
3. xml_rpc プロトコル
完全な xml_rpc 仕様は、http://www.xmlrpc.com/spec で参照できます。以下にその要点を解説します。
3.1 xml_rpc リクエスト
xml_rpc リクエストは http post リクエストである必要があり、その本文は XML 形式です。形式の要求 XML 部分は次のとおりです:
Xml version = "1.0"?>
请请请请 >> 请请请请请请请请 请请 请 请 请请 请 请 请 请 请 请 请 请 请 > 请 请 > > 请 请 请 请 请 请 请 请 请请 请 请 请 请 请 请 请 请 请 请 请 请” E
データの送信先を指定する URL はここでは指定されません。サーバーが rpc 処理専用に使用される場合は、「/」になる可能性があります。上記の XML ドキュメントのペイロードは「メソッドコール」構造です。 methodcall には、呼び出されるメソッドを説明する文字列を含む「methodname」サブ要素が含まれている必要があります。 「メソッド名」の内容をどのように解釈するかは完全にサーバー次第です。たとえば、実行可能ファイルの名前、データベース内のレコードの名前、またはその他の名前にすることができます。プロシージャがパラメータを受け入れる場合、「methodcall」には「params」要素といくつかの「param」子要素を含めることができます。各「param」要素には、型記述子を含む値が含まれます。型記述子は次の表に示すとおりです。
マークの説明
<i4> または <int> 12 などの 4 バイトの符号付き整数
<boolean > 0 (false)、または 1 (true)
<base64> ew91igbid0ihjlqgdghpcye などの Base64 でエンコードされたバイナリデータ
3.1.1 構造体
値は構造体にすることができ、その構造体は
3.1.2 配列
値は配列型にすることができ、配列は
<value><string>hello</string></value>
</data>
</array>
3.2 xml_rpc レスポンス
xml_rpc レスポンスは http レスポンスであり、コンテンツ タイプは text/xml です。レスポンスボディの形式は以下のとおりです。
<?xml version="1.0"?>
<methodresponse>
<params>
<param>
<value><string>abcdefg</string></value>
<値><int>4</int></value>
</member>
<member>
<name>faultstring</name>
<値><文字列>error!</string ></value>
< /member>
</struct>
</value>
</fault>
4. xml_rpcをベースにしたWebサービス
サービスの構築や利用にはxml_rpcを使うととても便利です。企業は、提供するさまざまなサービスのために xml_rpc サーバーを導入し、ユーザー、クライアント ソフトウェア、およびクライアント企業は、このサービスを使用してエンド ユーザー向けのハイエンド サービスやアプリケーションを構築できます。より効果的で、安価で、高品質なサービスを提供するためのこの競争により、アプリケーション サービスの品質が大幅に向上します。
しかし、Web 上でサービスをカタログ化、インデックス化、検索する方法など、解決すべき問題がまだいくつかあります。 uddi はこの問題を解決しようとしていますが、標準は単純ではなく、それに対する業界の対応はまだ明確ではありません。ただし、企業内で xml_rpc を適用すると、コードの再利用性が向上するだけでなく、今後数年間で確実に重要な知識の宝となる新しい分散コンピューティング モデルがもたらされます。 xml_rpc の開発は、分散コンピューティングの問題を解決することから始まり、サービス Web の基本レベルとなり、非常に良いスタートを切りました。この標準に対する人々の熱意に確実に従うことになるでしょう。ここでは、xml_rpc の実際のアプリケーションを見てみましょう。
4.1 phpでxml_rpcを適用する
PHP は、Web サービスを提供するための理想的な言語です。 PHP コードを記述して適切な場所に配置するだけで、URL を通じて「呼び出す」ことができるサービスがすぐに作成されます。 php での xml_rpc の実装は複雑な場合もあれば単純な場合もありますが、多くのオプションがあります。ここでは、役に立つ情報会社からの xml_rpc 実装を選択します。そのコードとドキュメントは http://xmlrpc.usefulinc.com/ からダウンロードできます。
この xml_rpc 実装の基本クラスには 2 つのファイルが含まれます:
xmlrpc.inc: xml_rpc の php クライアントに必要なクラスが含まれます
xmlrpcs.inc: xml_rpc の php サーバーに必要なクラスが含まれます
4.2 クライアント
xml_rpc クライアントの作成とは、次のことを意味します:
1. xml_rpc リクエスト メッセージを作成します
2. xml_rpc メッセージを作成します
4. 応答を取得します
6.応答を解釈します
次の例を参照してください:
<?php
$f=new xmlrpcmsg(examples.getstatename,array(new xmlrpcval(14, "int")));
$c=new xmlrpc_client("/ rpc2", "betty.userland.com", 80);
$r=$c->send($f);
$v=$r->value();
if (!$r-> ;faultcode( )) {
print "ステータスコード" . $http_post_vars["stateno"] . "Yes" .
$v->scalarval() . "
";
print "
サーバーの応答< br><pre>" .
htmlentities($r->
n";
} else {
print "エラー: ";
print "コード: " . $ r->faultcode() .
" 理由: " .$r->faultstring()."
";
}
?>
この例では、最初に呼び出しを作成します "例 .getstatename" メソッドを実行し、値 14 の "int" 型の整数パラメータを渡しました。次に、呼び出す URL (パス、ドメイン、ポート) を記述するクライアントを作成します。次に、メッセージを送信し、応答オブジェクトを受信して、エラーをチェックしました。エラーがなければ結果を表示します。
RPC クライアント プログラムを作成するときに使用される主な関数は次のとおりです:
クライアントを作成するには:
$client=new xmlrpc_client($server_path, $server_hostname, $server_port);
メッセージの送信方法は次のとおりです。
$response=$client->send($xmlrpc_message);
xmlrpcresp のインスタンスを返します。渡すメッセージは、次のメソッドで作成された xmlrpcmsg のインスタンスです:
$msg=new xmlrpcmsg($methodname, $parameterarray);
methodname は呼び出されるメソッド (プロセス) の名前です。 parameterarray は、xmlrpcval オブジェクトの PHP 配列です。例:
$msg=new xmlrpcmsg("examples.getstatename", array(new xmlrpcval(23, "int")));
xmlrpcval オブジェクトは次の形式で作成できます:
<?php
$ myval=new xmlrpcval($stringval);
$myval=new xmlrpcval($scalarval, "int" | "boolean" | "string" | "double" | "datetime.iso8601" | "base64");
$myval= new xmlrpcval( $arrayval, "array" | "struct");
?>
最初の形式は、xmlrpc 文字列値を作成します。 2 番目の形式は、値と型を説明する値を作成します。 3 番目の形式は、配列のような構造で他の xmlrpc 値を結合することによって複雑なオブジェクトを作成します。例:
<?php
$myarray=new xmlrpcval(array(new xmlrpcval("tom"), new xmlrpcval("dick) "),new xmlrpcval("harry")), "array");
$mystruct=new xmlrpcval(array(
"name" => new xmlrpcval("tom"),
"age" => new xmlrpcval (34, "int"),
"geek" => new xmlrpcval(1, "boolean")),"struct");
?>
の send メソッドを呼び出すことで、応答オブジェクトは xmlrpcresp 型になります。顧客オブジェクトを取得します。サーバー側では、次のように xmlrpcresp 型のオブジェクトを作成できます:
$resp=new xmlrpcresp($xmlrpcval); クライアント側では、次のメソッドを使用して応答から xmlrpcval を取得します:
$xmlrpcval =$resp ->value();
次に、次のメソッドを使用して、応答結果を記述する php 変数を取得できます。
$scalarval=$val->scalarval(); 複雑なデータ型の場合、非常に便利な関数が 2 つあり、どちらも xmlrpc.inc にあります:
$arr=xmlrpc_decode($xmlrpc_val);
この関数は、xmlrpcval 変数 $xmlrpc_val のデータを含む php 配列を返します。データはPHP自体が持つ変数型に変換されています。
$xmlrpc_val=xmlrpc_encode($phpval);この関数は、$phpval で記述された PHP データを含む xmlrpcval 型の値を返します。配列と構造体の場合、このメソッドにより再帰的分析が可能になります。非基本データ型 (base-64 データや日付時刻データなど) はサポートされていないことに注意してください。
4.3 サーバーサイド
xmlrpcs.inc が提供するクラス作成サービスを使用するのは非常に簡単です。サービスを作成するには、次のように xmlrpc_server のインスタンスを作成します:
<?php
$s=new xmlrpc_server( array("examples.myfunc" =>
array("function" => "foo")) );
?>
xmlrpc_server コンストラクターに渡されるのは、連想配列の連想配列です。プロシージャ「examples.myfunc」は「foo」関数を呼び出します。このため、foo はメソッド ハンドルと呼ばれます。
メソッドハンドルの記述は簡単です。メソッド ハンドルのスケルトンは次のとおりです:
<?php
function foo ($params) {
global $xmlrpcerruser; // ユーザー エラー コード値を導入します
// $params は xmlrpcval オブジェクトの配列です
if ( $err) {
// エラー条件
return new xmlrpcresp(0, $xmlrpcerruser+1, // ユーザーエラー 1
"error!");
} else {
// 成功
return new xmlrpcresp(new xmlrpcval("問題ありません!" , "string"));
}
}
?>
プログラムがエラーをチェックし、エラーがある場合はエラーを返します ($xmlrpcerruser+1 から開始します)。それ以外の場合は、すべてが正常であれば、成功メッセージとして説明操作 xmlrpcresp が返されます。
5. アプリケーション例
次の例では、サービスを構築します。指定された値 n に対して、サービスは n*2 を返します。クライアントはこのサービスを使用して 5*2 の値を計算します。
サーバー側のコードは次のとおりです:
include("xmlrpc.inc");
include("xmlrpcs.inc");
function foo ($params)
{
global $xmlrpcerruser; // ユーザーの紹介 エラー コード値
// $params は xmlrpcval オブジェクトの配列です
$vala=$params->params[0];
$sval=$vala->scalarval();
$ret=$ sval*2;
return new xmlrpcval($ret, "int"));
}
$s=new xmlrpc_server( array("product" =>
array("function" =>"foo") )));
?>
クライアントコードは次のとおりです:
<?php
include("xmlrpc.inc");
if ($http_post_vars["number"]!="") {
$ f=new xmlrpcmsg(product ,array(new xmlrpcval($http_post_vars["number"], "int")));
$c=new xmlrpc_client("/xmlrpc/servfoo.php", "luigi.melpomenia.com. ar", 80);
$c->setdebug(0);
$r=$c->send($f);
$v=$r->value();
if (!$ r->faultcode( )) {
print "number ". $http_post_vars["number"] . " は " .
$v->scalarval() ";
print "
結果サーバーから!<br ><pre>" .
htmlentities($r->serialize()). "</pre><hr>n";
} else {
print "操作が失敗しました: ";
print "コード: " . $ r->faultcode() .
" 理由: " .$r->faultstring()."<br>";
}
}
print "
上記の情報は記事本文の不可欠な部分です。この記事を転載したい場合は、上記の情報を保存してください。ありがとうございます!

在PHP应用中,我们有时需要使用当前日期作为文件名来保存或上传文件。虽然可以手动输入日期,但使用当前日期作为文件名可以更方便、快捷和准确。在PHP中,我们可以使用date()函数来获取当前日期。该函数的使用方法为:date(format,timestamp);其中,format为日期格式字符串,timestamp为表示日期和时间的时间戳,不传递该参数将使用

教程:使用FirebaseCloudMessaging在PHP应用中实现定时消息推送功能概述FirebaseCloudMessaging(FCM)是谷歌提供的一种免费的消息推送服务,它能够帮助开发者向Android、iOS和Web应用发送实时消息。本教程将带领大家通过PHP应用使用FCM实现定时消息推送功能。步骤一:创建Firebase项目首先,在F

一、什么是泛型编程泛型编程是指在编程语言中实现一种通用的数据类型,使得这种数据类型能够适用于不同的数据类型,从而实现代码的复用和高效。PHP是一种动态类型语言,不像C++、Java等语言有强类型机制,因此在PHP中实现泛型编程不是一件容易的事情。二、PHP中的泛型编程方式PHP中有两种方式实现泛型编程:分别是使用接口和使用Trait。使用接口在PHP中创建一

Redis是一个高性能的key-value存储系统,它支持多种数据结构,其中包括字符串、哈希表、列表、集合、有序集合等。同时,Redis也支持对字符串数据进行正则表达式的匹配和替换操作,这使得它在开发PHP应用中具有很大的灵活性和便捷性。在PHP应用中使用Redis进行正则表达式操作,需要先安装好phpredis扩展,该扩展提供了与Redis服务器进行通信的

Redis在PHP应用中的操作日志在PHP应用中,使用Redis作为缓存或存储数据的方案已经变得越来越普遍了。Redis是一种高性能的键值存储数据库,具有快速、可扩展、高可用、数据结构多样等特点。在使用Redis时,为了更好地了解应用程序的运行情况,同时为了数据的安全性,我们需要有一份Redis操作日志。Redis操作日志能够记录Redis服务器上所有客户端

随着互联网技术的不断发展,搜索引擎的应用越来越广泛。在互联网的背景下,搜索引擎已成为用户获取信息的主要途径之一。而在此过程中,全文搜索技术起到了至关重要的作用。全文搜索通过对文本内容的建立索引,在用户查询时快速定位到匹配的文本。在PHP应用中实现全文搜索,有很多的方案,而本文将重点介绍Redis在PHP应用中的全文搜索。Redis是一个高性能的非关系型内存

在PHP应用中,缓存技术是提高应用性能的重要手段之一。其中APC(AlternativePHPCache)缓存技术是PHP开发中比较常用的一种技术,可用于加快PHP应用程序页面的加载速度。在本文中,我们将讨论如何根据业务逻辑使用APC缓存技术,以改善PHP应用程序的性能。一、什么是APC缓存技术?APC是一种PHP扩展程序,它以缓存机制来加速PHP脚

在Web开发领域,Redis是一个非常流行的键值存储数据库,而PHP是一种广泛使用的Web编程语言。Redis提供了许多功能,其中一个非常有用的功能是Bitmap操作。Bitmap是Redis中的一种数据结构,它可以轻松地实现各种位图操作。本文旨在介绍Redis中的Bitmap操作,并演示如何在PHP中使用这些操作。什么是Bitmap?Bitmap是一种数据


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

MantisBT
Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

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

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

mPDF
mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

DVWA
Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、
