Maison >développement back-end >tutoriel php >À propos de l'architecture simple de l'implémentation du service Web en PHP

À propos de l'architecture simple de l'implémentation du service Web en PHP

不言
不言original
2018-06-21 15:04:311562parcourir

Cet article présente principalement quatre méthodes architecturales simples et des exemples d'implémentation de services Web en PHP. Les amis dans le besoin peuvent s'y référer

1 : le propre SOAP de PHP
Tous les services Web incluent le côté serveur (serveur) et client (cliente).
Pour utiliser le propre savon de PHP, vous devez d'abord installer et activer l'extension. Regardons le code spécifique ci-dessous
Tout d'abord, il s'agit de l'implémentation côté serveur :

<?php   
class test   
{   
    function show()   
    {   
        return &#39;the data you request!&#39;;   
    }   
}   
function getUserInfo($name)   
{   
    return &#39;fbbin&#39;;   
}   
//实例化的参数手册上面有,这个是没有使用wsdl的,所以第一个参数为null,如果有使用wsdl,那么第一个参数就是这个wsdl文件的地址。   
$server = new SoapServer(null, array(&#39;uri&#39; =&#39;http://soap/&#39;,&#39;location&#39;=&#39;http://localhost/test/server.php&#39;));   
$server->setClass(&#39;test&#39;);   
//$server->addFunction(&#39;getUserInfo&#39;);   
$server->handle();   
?>

Ensuite, le client

$soap = new SoapClient(null, array(&#39;location&#39;=&#39;http://localhost/test/server.php&#39;,&#39;uri&#39; =&#39;http://soap/&#39;));     
echo $soap->show();   
//得到:&#39;the data you request!&#39;   
//echo $soap->getUserInfo(&#39;sss&#39;);

C'est aussi simple que cela. , ce n'était qu'un exemple très simple. En fait, de nombreux mécanismes de communication sont mis en œuvre de cette manière !
//////////////////////////////////////////// /// ///////////////////////////////

Deux : PHPRPC
Premier coup sur le site officiel (http ://www.phprpc.org/zh_CN/) Allez télécharger la dernière version de phprpc Après la décompression, il y aura les fichiers pertinents (fichiers serveur et client) comme suit :
Fichiers serveur :

dhparams   
dhparams.php   
phprpc_server.php   
bigint.php   
compat.php   
phprpc_date.php   
xxtea.php

Fichiers clients :

phprpc_client.php   
bigint.php   
compat.php   
phprpc_date.php   
xxtea.php

Nous mettons les fichiers serveur dans le dossier serveur, puis mettons les fichiers clients dans le dossier client, puis créons un nouveau fichier (server.php) dans le dossier du serveur en tant que service, puis créez un nouveau fichier (client.php) sur le client en tant que client. Les codes respectifs sont les suivants :
Côté serveur :

.
<?php   
include_once"phprpc_server.php"; //加载phprpc文件   
$server = new PHPRPC_Server();   
$server->add(&#39;getUser&#39;);   
$server->setDebugMode(true);   
$server->start();   
function getUser( )   
{   
    return ‘the data you request!&#39;;   
}

Côté client :

[code]   
<?php   
include_once "phprpc_client.php";   
$client = new PHPRPC_Client(&#39;http://127.0.0.1/phpservice/phprpcserver/server.php&#39;);   
$data = $client->getUser();   
var_dump($data);   
//得到:the data you request!

Après avoir mentionné wsdl ci-dessus, nous parlerons de la façon de le générer.
//////////////////////////////////////////// /// ///////////////////////////////

Trois : NUSOAP open source
Allez d'abord en ligne. Téléchargez la dernière version de nusoap. La dernière version est la 0.9.5. Après la décompression, vous obtiendrez un dossier lib respectivement dans le serveur et le client, puis les créerez séparément sur le serveur et le client. Les fichiers server.php et client.php servent de fichiers de communication.
Les fichiers côté serveur sont les suivants :

<?php   
ini_set("soap.wsdl_cache_enabled", 0);//关闭缓存   
require_once("lib/nusoap.php"); //加载nusoap文件   
$server = new soap_server;   
$server->configureWSDL(&#39;nusoasp&#39;);//设定服务的名称,使用的wsdl来通信,如果不适用wsdl将会更简单,网上有很多的例子   
$server->register(&#39;getUserInfo&#39;, array(&#39;name&#39;="xsd:string", &#39;email&#39;="xsd:string"), array(&#39;return&#39;="xsd:string"));   
$HTTP_RAW_POST_DATA = isset($HTTP_RAW_POST_DATA) ? $HTTP_RAW_POST_DATA : &#39;&#39;;   
$server->service( $HTTP_RAW_POST_DATA );   
function getUserInfo($name, $email)   
{   
    return ‘the data you request!&#39;;   
}

Les fichiers côté client sont les suivants :

require_once("lib/nusoap.php");   
$client = new soapclient(&#39;http://localhost/phpservice/nusoapserver/server.php?wsdl&#39;);   
$pagram = array(&#39;fbbin&#39;, &#39;fbbin@foxmail.com&#39;);   
$string = $client->call(&#39;getUserInfo&#39;, $pagram);   
//得到:the data you request!

///////////// ////// ///////////////////////////////////////// ////////// //////////

Quatre : HessianPHP
hessian En fait, je pense personnellement que ce n'est pas un webservice, ça ne peut être que dit être similaire. Car il n’a pas les caractéristiques d’un webservice. Il prend en charge de nombreuses langues. Il ne nous reste plus qu'à étudier la version php de HessianPHP. La dernière version à télécharger est la v2.0.3. Après la décompression, vous obtiendrez un répertoire src, qui est un dossier principal que nous devons utiliser.
Nous l'avons renommé HessianPHP et l'avons placé respectivement sur le serveur et le client, puis avons créé les fichiers server.php et client.php respectivement.
Côté serveur :

<?php   
include_once &#39;HessianPHP/HessianService.php&#39;;//加载核心文件   
class TestService   
{   
    public function __construct()   
    {   
  
    }   
  
    public function add($numa, $numb)   
    {   
        return $numa + $numb;   
    }   
  
    public function check()   
    {   
        return &#39;fbbiin@gmail.com&#39;;   
    }   
}   
$test = new TestService();   
$hessian = new HessianService( $test, array(&#39;displayInfo&#39; => true) );   
$hessian->handle();//注意这里不是网上的$hessian->service(),可能是版本不一样,改了吧!我也是看了源码才知道!   
?>

Côté client :

<?php   
include_once &#39;HessianPHP/HessianClient.php&#39;;   
$url = "http://localhost/phpservice/hessianserver/server.php";   
$options = new HessianOptions();   
$client = new HessianClient( $url, $options );   
$num = $client->add( 3, 5 );   
echo $num;//得到:8;   
echo $client->check();//得到:fbbiin@gmail.com;

Les quatre méthodes ci-dessus sont des méthodes de communication de services Web couramment utilisées dans le processus de développement Web. Le plus couramment utilisé est nusoap. Personnellement, je pense que phprpc est en fait assez bon. Celui-ci est fondamentalement similaire à nusoap en termes de performances. Cependant, phprpc est commercialement facturé. Il existe également hessianPHP, qui semble utiliser Java et utilise une méthode binaire pour transmettre des flux de données. En fait, chacun a ses propres mérites. Pour des informations plus détaillées, veuillez consulter Baidu et Google.
Ce qui suit concerne la génération de fichiers wsdl.
La méthode la plus couramment utilisée et relativement sûre pour communiquer sur un service Web est d'utiliser wsdl. Ce type de fichier peut être écrit par soi-même, mais il ne semble pas possible pour certains experts de l'écrire, nous en avons donc besoin. pour utiliser un outil.zend studio pour générer des fichiers wsdl.
Ensuite, nous allons générer un fichier WSDL, Fichier->Nouveau—>Autre—>Service Web—>WSDL, afin de pouvoir créer un nouveau fichier WSDL, comme indiqué dans la figure.


Ensuite on modifie le fichier WSDL, zeng studio nous fournit des opérations visuelles, bien sur si Si vous êtes bons dans ce domaine, bien sûr, vous pouvez modifier le code du fichier. En fait, il n'y a que quelques choses, et ce ne sera pas trop difficile si vous les comprenez.


Après cette étape, le fichier WSDL est fondamentalement utilisable, mais il y a deux problèmes auxquels il faut prêter attention :
Après cela Étape, le test peut échouer, peut-être parce qu'il n'y a pas de liaison. Cela doit parfois être fait manuellement. Cliquez simplement avec le bouton droit sur la liaison et sélectionnez Générer du contenu de liaison (la petite case au milieu des deux grandes cases).
La deuxième chose à laquelle il faut prêter attention est le cache WSDL de php Lors des tests, vous devez généralement désactiver le cache WSDL, sinon vous risquez d'utiliser le fichier WSDL d'origine au lieu du fichier mis à jour. Il existe deux façons de désactiver le cache. La première consiste à définir directement soap.wsdl_cache_enabled = 0 dans php.ini ; la seconde consiste à ajouter une instruction dans le fichier php, ini_set("soap.wsdl_cache_enabled", "0"). ;
Après cela, vous pouvez tester et appeler en toute sécurité votre programme serveur.
C'est tout, OK !

Ce qui précède est l'intégralité du contenu de cet article. J'espère qu'il sera utile à l'étude de tout le monde. Pour plus de contenu connexe, veuillez faire attention au site Web PHP chinois !

Recommandations associées :

À propos du temps de formatage personnalisé php

À propos de l'utilisation de exec, system et d'autres fonctions pour appeler des commandes système dans la méthode php

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn