365bet亚洲真人workerman-json-rpc:使用workerman火速举办RPC开发的覆辙

 

设置表明:

需安装

  1. 服务端(memcached)
  2. 客户端(libmemcached)
  3. php的memcache扩展

安装服务端
brew install memcached

测试memcached安装是不是成功
ls -al /usr/local/bin/mem*

启动memcached服务(至于各参数可知详尽表明)
memcached -d

只要须求开机自启动,输入以下命令
ln -sfv /usr/local/opt/memcached/*.plist ~/Library/LaunchAgents


安装客户端
brew install libmemcached


php的memcache扩展

  • 下载稳定版的memcache包
    地址:http://pecl.php.net/package/memcache
  • 解压
    tar -xzf memcache-2.2.7.tgz
  • 编译

$ cd memcache-2.2.7  
$ phpize  
$ ./configure --enable-memcache --with-php-config=/usr/local/opt/php54/bin/php-config --with-zlib-dir  
$ sudo make & make install  

注:即使有发出以下的难点(php7环境)

fatal error: 'ext/standard/php_smart_str.h' file not found

git clone
https://github.com/php-memcached-dev/php-memcached.git
cd php-memcached/
git checkout php7
phpize
./configure –disable-memcached-sasl
–with-libmemcached-die=/usr/local/libmemcached
make && make instal

可参考:http://www.cnblogs.com/zqifa/p/linux-php-2.html

安装落成以后

将路径设置在php.ini文件的extension_dir参数 (我这边暗许的so文件是在
/usr/lib/php/extensions/no-debug-non-zts-20121212/)

365bet亚洲真人 1

image.png

php.ini(我那边地址是 /usr/local/etc/php/7.0/php.ini )添加参数:

extension_dir="/usr/local/Cellar/php70/7.0.14_7/lib/php/extensions/no-debug-non-zts-20151012/"
extension=memcached.so

  • 重启php-fpm

$ killall php-fpm  
$ /usr/local/opt/php54/sbin/php-fpm -D

重启nginx

$ nginx -s reload  

累加数据源:
Url的host就是zabbix服务端的地址
http://yourserverhost/zabbix/api\_jsonrpc.php

用户名密码就是zabbix的用户名密码

二、

今天来学学一下workerman那一个框架上的别样应用『Json Rpc远程调用框架』,
下载地址:
介绍:

JSON (JavaScript Object
Notation)是一种用于在组件间互动消息的数据互换格式,其是以JavaScript
为底蕴的数据表示语言。既有利于人的读写习惯,又便于总结机的辨析和转变。
RPC(Remote Procedure
Call)是远程调用,既客户端通过某种协议向服务器发起呼吁并获取结果。RPC使得开发分布式网络程序非凡便于,并且能大幅度限度的将互连网连串的一一部分解耦,方便后续开发、维护。
workerman-json-rpc是一个以workerman作为服务器容器,使用Json作为商事简单火速的RPC远程调用框架。

365bet亚洲真人 2
下载解压之后目录结构如下图,大家把JsonRpcStatistics
那2个目录的整整拷贝到 我们自身的种类中。
365bet亚洲真人 3
拷贝到jsonrpc 文件夹中,workerman
目录仍然大家最原始是workerman核心包。

1.新建allserver.php 来作为大家的服务端:

<?php

//引入Workerman核心包
require_once 'workerman/Autoloader.php';
//引入jsonRpc
require_once 'jsonrpc/JsonRpc/start.php';

启动:

php allserver.php  start

365bet亚洲真人 4

2.客户端
我们在其它一个网站(客户端)来调用大家服务端。
因为大家服务端使用的是『workerman-json-rpc』那一个插件,其中也卷入了客户端的代码。
我们把JsonRpc/Clients/PrcClient.php文本拷贝到我们的客户端项目,然后新建一个test.php文件来测试
365bet亚洲真人 5
test.php:

<?php

require_once 'RpcClient.php';

 // 服务端列表
$address_array = array(
    'tcp://10.211.55.13:2015', //我们只有一个服务
);
// 配置服务端列表
RpcClient::config($address_array);

$uid = 567;
$user_client = RpcClient::instance('User'); 
//这个User是服务端的类,在JsonRpc/Services/User.php

//调用User类中的方法
var_dump($user_client->getEmail(123));

365bet亚洲真人 6

3.赶回服务端,新建新闻服务News.php
365bet亚洲真人 7
可以看来,暗许有Blog类和User类(前边我们早就在客户端调用过)。

在服务端新建了一个News 服务后,不要求重启服务(不必要再行实施 php
allserver.php start)。

到来客户端测试:

<?php

require_once 'RpcClient.php';

 // 服务端列表
$address_array = array(
    'tcp://10.211.55.13:2015', //我们只有一个服务
);
// 配置服务端列表
RpcClient::config($address_array);

//客户端调用新闻服务
$client = RpcClient::instance('News');
var_dump($client->getTodayNews());

365bet亚洲真人 8

 

前言:

Memcached与Memcache的区别

关于Memcached和Memcache的分别,其实很简短,一个是服务端,一个是客户端,就如mysql一样,我们在命令行里输入各样sql语句就能查询到须求的结果,这就是客户端,客户端接收大家输入的吩咐从服务端查询,mysqld就是服务端,就是响应客户端的额后台进程,在此处也同样Memcached是服务端,而Memcache就是客户端。

由此我们要选择Memcached,首先在服务端安装好Memcached,并运行Memcached,然后安装Memcache就能采纳了。

365bet亚洲真人 9

前面大家早就简单的摸底了一晃『远程调用PRC』
1.Socket学习 –
撕开长途调用的逼非凡衣(上)
2.Socket学习 –
撕开长途调用的逼非凡衣(下)超不难仿制一个RPC客户端
365bet亚洲真人 10

365bet亚洲真人 11

365bet亚洲真人 12

服务端会打印

假如仍旧想选取MySQL:

communicationPack.php

<?php
//对数据信息封装
function packData($sendData,$packModel){
    return pack($packModel, strlen($sendData)).$sendData;
}

//解包
function unpackData($rcvData,$packModel){
    $length = $packModel=='N'?4:2;
    return substr($rcvData,$length);
}

365bet亚洲真人 13

pack N是将数据转成了无符号32位的数字,那么些刚好长度是4个字节,所以设定

vi /etc/php.ini
date.timezone=Europe/Riga

2.服务端 tcpServer.php

365bet亚洲真人 14

网络通讯进度中,大概会现出分包和合包的景况。具体景况如

365bet亚洲真人 15

365bet亚洲真人 16

登录zabbix:
暗中认同的账户名:Admin, 密码zabbix
添加客户端:
Configuration 》Hosts

365bet亚洲真人 17

wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
sudo rpm -ivh mysql-community-release-el7-5.noarch.rpm
sudo yum install mysql-server
sudo systemctl start mysqld

发表评论

电子邮件地址不会被公开。 必填项已用*标注