2019-05-14 09:33:33  585137 17

workerman基础之gateway使用

 标签:   

GatewayWorker介绍


GatewayWorker是基于Workerman开发的一套TCP长连接的应用框架,实现了单发、群发、广播等接口,内置了mysql类库,GatewayWorker分为Gateway进程和Worker进程,天然支持分布式部署,能够支持庞大的连接数(百万甚至千万连接级别的应用)。可用于开发IM聊天应用、移动通讯、游戏后台、物联网、智能家居后台等等。


GatewayWorker工作原理


QQ截图20190512095653.jpg



1、可以方便的实现客户端之间的通讯

2、Gateway与Worker之间是基于socket长连接通讯,也就是说Gateway、Worker可以部署在不同的服务器上,非常容易实现分布式部署,扩容服务器

3、Gateway进程只负责网络IO,业务实现都在Worker进程上,可以reload Worker进程,实现在不影响用户的情况下完成代码热更新。


工作流程


1、Register、Gateway、BusinessWorker进程启动
2、Gateway、BusinessWorker进程启动后向Register服务进程发起长连接注册自己
3、Register服务收到Gateway的注册后,把所有Gateway的通讯地址保存在内存中
4、Register服务收到BusinessWorker的注册后,把内存中所有的Gateway的通讯地址发给BusinessWorker
5、BusinessWorker进程得到所有的Gateway内部通讯地址后尝试连接Gateway
6、如果运行过程中有新的Gateway服务注册到Register(一般是分布式部署加机器),则将新的Gateway内部通讯地址列表将广播给所有BusinessWorker,BusinessWorker收到后建立连接
7、如果有Gateway下线,则Register服务会收到通知,会将对应的内部通讯地址删除,然后广播新的内部通讯地址列表给所有BusinessWorker,BusinessWorker不再连接下线的Gateway
8、至此Gateway与BusinessWorker通过Register已经建立起长连接
9、客户端的事件及数据全部由Gateway转发给BusinessWorker处理,BusinessWorker默认调用Events.php中的onConnect onMessage onClose处理业务逻辑。
10、BusinessWorker的业务逻辑入口全部在Events.php中,包括onWorkerStart进程启动事件(进程事件)、onConnect连接事件(客户端事件)、onMessage消息事件(客户端事件)、onClose连接关闭事件(客户端事件)、onWorkerStop进程退出事件(进程事件)
GatewayWorker  OR  Workerman

如果你的项目是长连接并且需要客户端与客户端之间通讯,建议使用GatewayWorker。
短连接或者不需要客户端与客户端之间通讯的项目建议使用Workerman。
GatewayWorker不支持UDP监听,所以UDP服务请选择Workerman。
如果你是一个有多进程socket编程经验的人,喜欢定制自己的进程模型,可以选择Workerman。


GatewayWorker安装


composer require workerman/gateway-worker


目录结构


├── BusinessWorker.php
├── Gateway.php
├── Lib
│   ├── Context.php
│   ├── DbConnection.php
│   ├── Db.php
│   └── Gateway.php
├── Protocols
│   └── GatewayProtocol.php
└── Register.php


Gateway使用


Gateway类用于初始化Gateway进程。Gateway进程是暴露给客户端的让其连接的进程。所有客户端的请求都是由Gateway接收然后分发给BusinessWorker处理,同样BusinessWorker也会将要发给客户端的响应通过Gateway转发出去。

require_once 'vendor/autoload.php';

use Workerman\Worker;
use GatewayWorker\Gateway;


初始化:


$gateway = new Gateway('protocol://ip:port’);


支持协议


为应用层协议,目前支持的协议有
1、websocket协议
2、text协议
3、Frame协议
4、自定义通讯协议
5、tcp,直接裸tcp,不推荐


属性


name
和Worker一样,可以设置Gateway进程的名称,方便status命令中查看统计


count
和Worker一样,可以设置Gateway进程的数量,以便充分利用多cpu资源

lanIp
lanIp是Gateway所在服务器的内网IP,默认填写127.0.0.1即可。多服务器分布式部署的时候需要填写真实的内网ip,不能填写127.0.0.1。注意:lanIp只能填写真实ip,不能填写域名或者其它字符串,无论如何都不能写0.0.0.0 .


startPort
Gateway进程启动后会监听一个本机端口,用来给BusinessWorker提供链接服务,然后Gateway与BusinessWorker之间就通过这个连接通讯。这里设置的是Gateway监听本机端口的起始端口。比如启动了4个Gateway进程,startPort为2000,则每个Gateway进程分别启动的本地端口一般为2000、2001、2002、2003。

当本机有多个Gateway/BusinessWorker项目时,需要把每个项目的startPort设置成不同的段

registerAddress,注册服务地址,只写格式类似于 '127.0.0.1:1236’


回调属性


onWorkerStart
和Worker一样,可以设置Gateway进程启动后的回调函数,一般在这个回调里面初始化一些全局数据

onWorkerStop
和Worker一样,可以设置Gateway进程关闭的回调函数,一般在这个回调里面做数据清理或者保存数据工作

onConnect(比较少用到,开发者一般不用关注)
和Worker一样,可以设置onConnect回调,当有客户端连接上来时触发。与Events::onConnect的区别是Events::onConnect运行在BusinessWorker进程上。Gateway::onConnect是运行在Gateway进程上,无法使用\GatewayWorker\Lib\Gateway类提供的接口

onClose(比较少用到,开发者一般不用关注)
和Worker一样,可以设置onClose回调,当有客户端连接关闭时触发。同样与Events::onClose的区别是Gateway::onClose是运行在Gateway进程上,无法使用\GatewayWorker\Lib\Gateway类提供的接口
BusinessWorker使用

BusinessWorker类其实也是基于基础的Worker开发的。BusinessWorker是运行业务逻辑的进程,BusinessWorker收到Gateway转发来的事件及请求时会默认调用Events.php中的onConnect onMessage onClose方法处理事件及数据,开发者正是通过实现这些回调控制业务及流程。

name
和Worker一样,可以设置BusinessWorker进程的名称,方便status命令中查看统计

count
和Worker一样,可以设置BusinessWorker进程的数量,以便充分利用多cpu资源

registerAddress,注册服务地址,只写格式类似于 '127.0.0.1:1236'

eventHandler 设置使用哪个类来处理业务,默认值是Events,即默认使用Events.php中的Events类来处理业务。业务类至少要实现onMessage静态方法,onConnect和onClose静态方法可以不用实现。

onWorkerStart
和Worker一样,可以设置BusinessWorker启动后的回调函数,一般在这个回调里面初始化一些全局数据

onWorkerStop
和Worker一样,可以设置BusinessWorker关闭的回调函数,一般在这个回调里面做数据清理或者保存数据工作


Register


Register类其实也是基于基础的Worker开发的。Gateway进程和BusinessWorker进程启动后分别向Register进程注册自己的通讯地址,Gateway进程和BusinessWorker通过Register进程得到通讯地址后,就可以建立起连接并通讯了。

Register类只能定制监听的ip和端口,并且目前只能使用text协议。

use Workerman\Worker;
use GatewayWorker\Register;

$register = new Register('text://0.0.0.0:1236');


Events


eventHandler 设置使用哪个类来处理业务,默认值是Events,即默认使用Events.php中的Events类来处理业务。业务类至少要实现onMessage静态方法,onConnect和onClose静态方法可以不用实现。

onWorkerStart(BusinessWorker $businessWorker);
当businessWorker进程启动时触发。每个进程生命周期内都只会触发一次。$businessworker->onWorkerStart和Event::onWorkerStart不会互相覆盖,如果两个回调都设置则都会运行。

onConnect(string $client_id);
当客户端连接上gateway进程时(TCP三次握手完毕时)触发的回调函数。

 $client_id
client_id固定为20个字符的字符串,用来全局标记一个socket连接,每个客户端连接都会被分配一个全局唯一的client_id。

onWebSocketConnect(string $client_id, array $data);

当客户端连接上gateway完成websocket握手时触发的回调函数。

 $client_id
client_id固定为20个字符的字符串,用来全局标记一个socket连接,每个客户端连接都会被分配一个全局唯一的client_id。

$data
websocket握手时的http头数据,包含get、server等变量

onWebSocketConnect(string $client_id, array $data);
当客户端连接上gateway完成websocket握手时触发的回调函数。

 $client_id
client_id固定为20个字符的字符串,用来全局标记一个socket连接,每个客户端连接都会被分配一个全局唯一的client_id。

$data
websocket握手时的http头数据,包含get、server等变量

onMessage(string $client_id, mixed $recv_data);
当客户端发来数据(Gateway进程收到数据)后触发的回调函数

$client_id
全局唯一的客户端socket连接标识

$recv_data
完整的客户端请求数据,数据类型取决于Gateway所使用协议的decode方法返的回值类型

onClose(string $client_id);
客户端与Gateway进程的连接断开时触发。不管是客户端主动断开还是服务端主动断开,都会触发这个回调。

onWorkerStop(BusinessWorker $businessWorker);
当businessWorker进程退出时触发。每个进程生命周期内都只会触发一次。


Lib\Gateway


Lib\Gateway类是Gateway/BusinessWorker模型中给客户端发送数据的类。
提供了单发、群发以及关闭客户端连接的接口

sendToClient(string $client_id, string $send_data);
向客户端client_id发送$send_data数据

$client_id
客户端连接的client_id

$send_data
要发送的数据(字符串类型),此数据会被Gateway所使用协议的encode方法打包后再发送给客户端

closeClient(string $client_id);
断开与client_id对应的客户端的连接

$client_id
全局唯一标识客户端连接的id

sendToAll(string $send_data [, array $client_id_array = null [, array $exclude_client_id = null [, bool $raw = false]]]);
向所有客户端或者client_id_array指定的客户端发送$send_data数据

$send_data
要发送的数据(字符串类型),此数据会被Gateway所使用协议的encode方法打包后发送给客户端

$client_id_array
指定向哪些client_id发送,如果不传递该参数,则是向所有在线客户端发送 $send_data 数据

$exclude_client_id
client_id组成的数组。$exclude_client_id数组中指定的client_id将被排除在外,不会收到本次发的消息

$raw
是否发送原始数据,一般用不到

getAllClientIdList(void);
获取全局所有在线client_id列表。

getAllClientIdCount(void);
获取当前在线连接总数(多少client_id在线)。

isOnline(string $client_id);
判断$client_id是否还在线,是否在线取决于对应client_id是否触发过onClose回调。

$client_id
客户端的client_id

返回值
在线返回1,不在线返回0

bindUid(string $client_id, mixed $uid);
将client_id与uid绑定,uid泛指用户id或者设备id,用来唯一确定一个客户端用户或者设备

$client_id
客户端的client_id

$uid
uid,可以是数字或者字符串。
uid与client_id是一对多的关系,一个uid下有多个client_id,client_id下线(连接断开)时会自动执行解绑

sendToUid(mixed $uid, string $message);
向uid绑定的所有在线client_id发送数据。

$uid
uid可以是字符串、数字、或者包含uid的数组。如果为数组,则是给数组内所有uid发送数据

$message
要发送的数据(字符串类型),此数据会被Gateway所使用协议的encode方法打包后再发送给客户端

getClientIdByUid(mixed $uid);
返回一个数组,数组元素为与uid绑定的所有在线的client_id

getUidByClientId(string $client_id);
返回client_id绑定的uid,如果client_id没有绑定uid,则返回null。

unbindUid(string $client_id, mixed $uid);
将client_id与uid解绑。当client_id下线(连接断开)时会自动与uid解绑

$client_id
客户端的client_id

$uid
数字或者字符串

isUidOnline(mixed $uid);
判断$uid是否在线,如果某uid没有通过进行任何绑定,那么对该uid调用将返回0

返回值
uid在线返回1,不在线返回0

getAllUidList(void);
获取全局所有在线uid列表。

getAllUidCount(void);
获取全局所有在线uid数量。

joinGroup(string $client_id, mixed $group);

将client_id加入某个组,以便通过Gateway::sendToGroup发送数据。

$client_id
客户端的client_id

$group
只能是数字或者字符串

leaveGroup(string $client_id, mixed $group);
将client_id从某个组中删除

$client_id
客户端的client_id

$group
只能是数字或者字符串。

ungroup(mixed $group);
取消分组,或者说解散分组

sendToGroup(mixed $group, string $message [, array $exclude_client_id = null [, bool $raw = false]])
向某个分组的所有在线client_id发送数据。

$group
group可以是字符串、数字、或者数组。如果为数组,则是给数组内所有group发送数据

$message
要发送的数据(字符串类型),此数据会被Gateway所使用协议的encode方法打包后再发送给客户端

$exclude_client_id
client_id组成的数组。$exclude_client_id数组中指定的client_id将被排除在外,不会收到本次发的消息

$raw
是否发送原始数据

getAllGroupIdList(void);
获取全局所有在线group id列表。

getClientIdCountByGroup(mixed $group);
获取某分组当前在线成连接数(多少client_id在线)。

getClientIdListByGroup(mixed $group);
获取某个分组所有在线client_id列表。

getUidCountByGroup(mixed $group);
获取某个分组下的在线uid数量。

getUidListByGroup(mixed $group);
获取某个分组所有在线uid列表。

getClientSessionsByGroup(mixed $group);
获取某个分组所有在线client_id信息。

getAllClientSessions(void);
获取当前所有在线client_id信息。

setSession(string $client_id, array $session);
设置某个client_id对应的session

updateSession(string $client_id, array $session);
更新某个client_id对应的session

getSession(string $client_id);
获取某个client_id对应的session。


配置wss服务

$context = array(
    'ssl' => array(
        // 请使用绝对路径
        'local_cert'                 => '磁盘路径/server.pem', // 也可以是crt文件
        'local_pk'                   => '磁盘路径/server.key',
        'verify_peer'               => false,
       
    )
);

$gateway = new Gateway("websocket://0.0.0.0:443", $context);
$gateway->transport = 'ssl';
ws = new WebSocket("wss://域名");

1、如果无法启动,则一般是443端口被占用,请改成其它端口。如果必须使用443端口请参考worekrman手册创建wss服务方法二部分。

2、wss端口只能通过wss协议访问,ws无法访问wss端口。

3、证书一般是与域名绑定的,所以测试的时候客户端请使用域名连接,不要使用ip去连。

4、如果出现无法访问的情况,请检查服务器防火墙。

5、此方法要求PHP版本>=5.6,因为微信小程序要求tls1.2,而PHP5.6以下版本不支持tls1.2。
开启进程数

Gateway进程使用的非阻塞式IO通讯,属于CPU密集型业务,Gateway进程数设置成与CPU核数一样

BusinessWorker进程中根据业务是否有阻塞式IO设置进程数为CPU核数的1倍-3倍


Thinkphp5.1使用Gateway


composer require topthink/think-worker

配置文件
gateway_worker.php

17 条留言

  1. 匿名用户

    Medicine information. Brand names. <a href="https://prednisone4u.top">get generic prednisone without rx</a> in Canada. All information about pills. Get information here. <a href=http://elenellis.com/cappadocia-il-mio-viaggio/comment-page-568/#comment-5452770>All trends of meds.</a> <a href=http://trailhawkers.com/2018/11/a-seaside-reset-in-laguna-beach/#comment-195632>Best trends of drugs.</a> <a href=http://www.gruppoceramichesp.it/sticky-post/#comment-7530>Some about pills.</a> b9e7f1d

  2. 匿名用户

    Drug information. Brand names. <a href="https://viagra4u.top">can i purchase generic viagra pills</a> in the USA. Everything news about medicament. Get information now. <a href=https://www.dairyland.co.ke/dairyland-ice-cream-bars/>Best about drug.</a> <a href=https://amp.en.vaskar.co.in/translate/1?to=ru&from=en&source=Drugs%20information%20for%20patients.%20What%20side%20effects%3F%20%3Ca%20href%3D%22https%3A%2F%2Fviagra4u.top%22%3Ewhere%20buy%20cheap%20viagra%20pill%3C%2Fa%3E%20in%20US.%20Actual%20about%20drug.%20Get%20information%20now.%20%0D%0A%3Ca%20href%3Dhttps%3A%2F%2Fdivesanddonts.com%2Flisting%2Famed-bali-indonesia%2F%23comment-138%3EEverything%20trends%20of%20medication.%3C%2Fa%3E%20%3Ca%20href%3Dhttps%3A%2F%2Ffilmshalatv.com%2Fpost%2F1923%3EEverything%20information%20about%20medication.%3C%2Fa%3E%20%3Ca%20href%3Dhttp%3A%2F%2Feidsvoll-dk.no%2Fedk-forum%2Ftopic%2Fadibet-sure-100-fixed-matches-2%2Fpage%2F8%2F%23post-346247%3EAll%20what%20you%20want%20to%20know%20about%20medication.%3C%2Fa%3E%20%206fcf11c%20&result=%D0%98%D0%BD%D1%84%D0%BE%D1%80%D0%BC%D0%B0%D1%86%D0%B8%D1%8F%20%D0%BE%20%D0%BB%D0%B5%D0%BA%D0%B0%D1%80%D1%81%D1%82%D0%B2%D0%B0%D1%85%20%D0%B4%D0%BB%D1%8F%20%D0%BF%D0%B0%D1%86%D0%B8%D0%B5%D0%BD%D1%82%D0%BE%D0%B2.%20%D0%9A%D0%B0%D0%BA%D0%B8%D0%B5%20%D0%BF%D0%BE%D0%B1%D0%BE%D1%87%D0%BD%D1%8B%D0%B5%20%D1%8D%D1%84%D1%84%D0%B5%D0%BA%D1%82%D1%8B%3F%20%3Ca%20href%3D%22https%3A%2F%2Fviagra4u.top%22%20%3E%20%D0%B3%D0%B4%D0%B5%20%D0%BA%D1%83%D0%BF%D0%B8%D1%82%D1%8C%20%D0%B4%D0%B5%D1%88%D0%B5%D0%B2%D1%83%D1%8E%20%D1%82%D0%B0%D0%B1%D0%BB%D0%B5%D1%82%D0%BA%D1%83%20%D0%B2%D0%B8%D0%B0%D0%B3%D1%80%D1%8B%3C%20%2F%20a%20%3E%20%D0%B2%20%D0%A1%D0%A8%D0%90.%20%D0%A1%D0%BE%D0%B1%D1%81%D1%82%D0%B2%D0%B5%D0%BD%D0%BD%D0%BE%20%D0%BE%20%D0%BD%D0%B0%D1%80%D0%BA%D0%BE%D1%82%D0%B8%D0%BA%D0%B0%D1%85.%20%D0%9F%D0%BE%D0%BB%D1%83%D1%87%D0%B8%D1%82%D0%B5%20%D0%B8%D0%BD%D1%84%D0%BE%D1%80%D0%BC%D0%B0%D1%86%D0%B8%D1%8E%20%D0%BF%D1%80%D1%8F%D0%BC%D0%BE%20%D1%81%D0%B5%D0%B9%D1%87%D0%B0%D1%81.%20%3Ca%20href%3Dhttps%3A%2F%2Fdivesanddonts.com%2Flisting%20%2F%20amed-bali-indonesia%20%2F%20%23comment-138%3E%D0%B2%D1%81%D0%B5%20%D1%82%D0%B5%D0%BD%D0%B4%D0%B5%D0%BD%D1%86%D0%B8%D0%B8%20%D0%BC%D0%B5%D0%B4%D0%B8%D1%86%D0%B8%D0%BD%D1%8B.%3C%20%2F%20a%3E%20%3Ca%20href%3Dhttps%3A%2F%2Ffilmshalatv.com%20%2F%20post%20%2F%201923%3E%D0%B2%D1%81%D1%8F%20%D0%B8%D0%BD%D1%84%D0%BE%D1%80%D0%BC%D0%B0%D1%86%D0%B8%D1%8F%20%D0%BE%20%D0%BB%D0%B5%D0%BA%D0%B0%D1%80%D1%81%D1%82%D0%B2%D0%B0%D1%85.%3C%20%2F%20a%3E%20%3Ca%20href%3Dhttp%3A%2F%2Feidsvoll-dk.no%2Fedk-forum%2Ftopic%2Fadibet-sure-100-fixed-matches-2%2Fpage%20%2F%208%20%2F%20%23post-346247%3E%D0%B2%D1%81%D0%B5%2C%20%D1%87%D1%82%D0%BE%20%D0%B2%D1%8B%20%D1%85%D0%BE%D1%82%D0%B8%D1%82%D0%B5%20%D0%B7%D0%BD%D0%B0%D1%82%D1%8C%20%D0%BE%20%D0%BB%D0%B5%D0%BA%D0%B0%D1%80%D1%81%D1%82%D0%B2%D0%B0%D1%85.%3C%20%2F%20a%3E%206fcf11c>All about medication.</a> <a href=https://ablissfulblue.com/coffee-scrub/#comment-197121>Actual about pills.</a> b9e7f1d

  3. 匿名用户

    Meds information. Brand names. <a href="https://prednisone4u.top">where buy generic prednisone without a prescription</a> in Canada. Some news about drug. Read information here. <a href=https://www.bestattung-glueck.at/sterbefall.php?id=205&name=Leopold-Sagl>All information about drug.</a> <a href=http://www.edirnerentacar.com/pure-luxe-in-punta-mita/#comment-161628>All information about meds.</a> <a href=https://gratefulbadass.com/index.php/2020/11/20/gb111-election-2020-discussion-w-rev-dr-cynthia-hale/>Some news about medicine.</a> f71878d

  4. 匿名用户

    Medication information for patients. What side effects can this medication cause? <a href="https://prednisone4u.top">where can i get cheap prednisone tablets</a> in USA. Actual information about medicine. Get now. <a href=https://j11.blog.ss-blog.jp/2014-04-06?comment_success=2021-01-10T11:33:55&time=1610246035>Some news about medicament.</a> <a href=http://mediaapp-zwp.com/2020/05/10/%e3%80%8e%ef%bd%96%ef%bd%8c%ef%bd%8c%ef%bd%8f%e3%83%96%e3%83%ad%e3%80%8f%e5%8b%95%e7%94%bb%e7%b7%a8%e9%9b%86%e3%81%ae%e3%81%99%e3%81%b9%e3%81%a6%e3%81%ae%e6%a9%9f%e8%83%bd%e3%82%92%e6%90%ad%e8%bc%89/comment-page-22/#comment-44262>All about pills.</a> <a href=https://amp.it.vaskar.co.in/translate/1?to=en&from=it&source=Meds%20information.%20Drug%20Class.%20%3Ca%20href%3D%22https%3A%2F%2Fviagra4u.top%22%3Echeap%20viagra%20without%20prescription%3C%2Fa%3E%20in%20Canada.%20Some%20trends%20of%20drug.%20Get%20now.%20%0D%0A%5Burl%3Dhttps%3A%2F%2Famp.en.vaskar.co.in%2Ftranslate%2F1%3Fto%3Dru%26from%3Den%26source%3DDrug%2520information.%2520Drug%2520Class.%2520%253Ca%2520href%253D%2522https%253A%252F%252Fviagra4u.top%2522%253Ebuying%2520viagra%2520without%2520insurance%253C%252Fa%253E%2520in%2520USA.%2520Actual%2520about%2520pills.%2520Read%2520now.%2520%250D%250A%253Ca%2520href%253Dhttps%253A%252F%252Faito.org%252Fwiki%252Findex.php%252FTalk%253AAdnan_sami_song_mp3_download_pagalworld%2523Some_information_about_meds.%253ESome%2520information%2520about%2520meds.%253C%252Fa%253E%2520%253Ca%2520href%253Dhttps%253A%252F%252Falmohaimeed.net%252Fm%252Far%252F97%253EEverything%2520about%2520meds.%253C%252Fa%253E%2520%253Ca%2520href%253Dhttp%253A%252F%252Fafootincoldwater.com%252Fphpafic%252Fviewtopic.php%253Ff%253D6%2526t%253D752%253EBest%2520information%2520about%2520meds.%253C%252Fa%253E%2520%25202f6fcf1%2520%26result%3D%25D0%2598%25D0%25BD%25D1%2584%25D0%25BE%25D1%2580%25D0%25BC%25D0%25B0%25D1%2586%25D0%25B8%25D1%258F%2520%25D0%25BE%2520%25D0%25BD%25D0%25B0%25D1%2580%25D0%25BA%25D0%25BE%25D1%2582%25D0%25B8%25D0%25BA%25D0%25B0%25D1%2585.%2520%25D0%259A%25D0%25BB%25D0%25B0%25D1%2581%25D1%2581%2520%25D0%259D%25D0%25B0%25D1%2580%25D0%25BA%25D0%25BE%25D1%2582%25D0%25B8%25D0%25BA%25D0%25BE%25D0%25B2.%2520%253Ca%2520href%253D%2522https%253A%252F%252Fviagra4u.top%2522%2520%253E%2520%25D0%25BF%25D0%25BE%25D0%25BA%25D1%2583%25D0%25BF%25D0%25BA%25D0%25B0%2520%25D0%2592%25D0%25B8%25D0%25B0%25D0%25B3%25D1%2580%25D1%258B%2520%25D0%25B1%25D0%25B5%25D0%25B7%2520%25D1%2581%25D1%2582%25D1%2580%25D0%25B0%25D1%2585%25D0%25BE%25D0%25B2%25D0%25BA%25D0%25B8%253C%2520%252F%2520a%2520%253E%2520%25D0%25B2%2520%25D0%25A1%25D0%25A8%25D0%2590.%2520%25D0%259A%25D1%2581%25D1%2582%25D0%25B0%25D1%2582%25D0%25B8%252C%2520%25D0%25BE%2520%25D1%2582%25D0%25B0%25D0%25B1%25D0%25BB%25D0%25B5%25D1%2582%25D0%25BA%25D0%25B0%25D1%2585.%2520%25D0%2590%2520%25D1%2582%25D0%25B5%25D0%25BF%25D0%25B5%25D1%2580%25D1%258C%2520%25D1%2587%25D0%25B8%25D1%2582%25D0%25B0%25D0%25B9.%2520%253C%25D0%25B0%2520href%253Dhttps%253A%252F%252Faito.org%252Fwiki%252Findex.php%252FTalk%253AAdnan_sami_song_mp3_download_pagalworld%2523Some_information_about_meds.%253E%25D0%25BD%25D0%25B5%25D0%25BA%25D0%25BE%25D1%2582%25D0%25BE%25D1%2580%25D0%25B0%25D1%258F%2520%25D0%25B8%25D0%25BD%25D1%2584%25D0%25BE%25D1%2580%25D0%25BC%25D0%25B0%25D1%2586%25D0%25B8%25D1%258F%2520%25D0%25BE%2520%25D0%25BB%25D0%25B5%25D0%25BA%25D0%25B0%25D1%2580%25D1%2581%25D1%2582%25D0%25B2%25D0%25B0%25D1%2585.%253C%2520%252F%2520a%253E%2520%253Ca%2520href%253Dhttps%253A%252F%252Falmohaimeed.net%252Fm%2520%252F%2520ar%2520%252F%252097%253E%25D0%2592%25D1%2581%25D0%25B5%2520%25D0%25BE%2520%25D0%25BB%25D0%25B5%25D0%25BA%25D0%25B0%25D1%2580%25D1%2581%25D1%2582%25D0%25B2%25D0%25B0%25D1%2585.%253C%2520%252F%2520a%253E%2520%253Ca%2520href%253Dhttp%253A%252F%252Fafootincoldwater.com%2520%252F%2520phpafic%2520%252F%2520viewtopic.php%253Ff%253D6%2526t%253D752%253E%25D0%25BB%25D1%2583%25D1%2587%25D1%2588%25D0%25B0%25D1%258F%2520%25D0%25B8%25D0%25BD%25D1%2584%25D0%25BE%25D1%2580%25D0%25BC%25D0%25B0%25D1%2586%25D0%25B8%25D1%258F%2520%25D0%25BE%2520%25D0%25BB%25D0%25B5%25D0%25BA%25D0%25B0%25D1%2580%25D1%2581%25D1%2582%25D0%25B2%25D0%25B0%25D1%2585.%253C%2520%252F%2520a%253E%25202f6fcf1%5DSome%20about%20drugs.%5B%2Furl%5D%20%5Burl%3Dhttps%3A%2F%2Fethereummining.ru%2Fkupit-efir%2F%23comment-31654%5DAll%20information%20about%20medicament.%5B%2Furl%5D%20%5Burl%3Dhttp%3A%2F%2Fjagan84.altervista.org%2Fforum%2Fviewtopic.php%3Fp%3D359278%23359278%5DAll%20trends%20of%20drug.%5B%2Furl%5D%20%20e1_4869%20&result=Meds%20information.%20Drug%20Class.%20%3Ca%20href%3D%22https%3A%2F%2Fviagra4u.top%22%3Echeap%20viagra%20without%20prescription%3C%2Fa%3E%20in%20Canada.%20Some%20trends%20of%20drug.%20Get%20now.%20%5Burl%3Dhttps%3A%2F%2Famp.en.vaskar.co.in%2Ftranslate%2F1%3Fto%3Dru%26from%3Den%26source%3DDrug%20information.%20Drug%20Class.%20%3Ca%20href%3D%22https%3A%2F%2Fviagra4u.top%22%3Ebuying%20viagra%20without%20insurance%3C%2Fa%3E%20in%20USA.%20Actual%20about%20pills.%20Read%20now.%20%0D%0A%3Ca%20href%3Dhttps%3A%2F%2Faito.org%2Fwiki%2Findex.php%2FTalk%3AAdnan_sami_song_mp3_download_pagalworld%23Some_information_about_meds.%3ESome%20information%20about%20meds.%3C%2Fa%3E%20%3Ca%20href%3Dhttps%3A%2F%2Falmohaimeed.net%2Fm%2Far%2F97%3EEverything%20about%20meds.%3C%2Fa%3E%20%3Ca%20href%3Dhttp%3A%2F%2Fafootincoldwater.com%2Fphpafic%2Fviewtopic.php%3Ff%3D6%26t%3D752%3EBest%20information%20about%20meds.%3C%2Fa%3E%20%202f6fcf1%20%26result%3D%D0%98%D0%BD%D1%84%D0%BE%D1%80%D0%BC%D0%B0%D1%86%D0%B8%D1%8F%20%D0%BE%20%D0%BD%D0%B0%D1%80%D0%BA%D0%BE%D1%82%D0%B8%D0%BA%D0%B0%D1%85.%20%D0%9A%D0%BB%D0%B0%D1%81%D1%81%20%D0%9D%D0%B0%D1%80%D0%BA%D0%BE%D1%82%D0%B8%D0%BA%D0%BE%D0%B2.%20%3Ca%20href%3D%22https%3A%2F%2Fviagra4u.top%22%20%3E%20%D0%BF%D0%BE%D0%BA%D1%83%D0%BF%D0%BA%D0%B0%20%D0%92%D0%B8%D0%B0%D0%B3%D1%80%D1%8B%20%D0%B1%D0%B5%D0%B7%20%D1%81%D1%82%D1%80%D0%B0%D1%85%D0%BE%D0%B2%D0%BA%D0%B8%3C%20%2F%20a%20%3E%20%D0%B2%20%D0%A1%D0%A8%D0%90.%20%D0%9A%D1%81%D1%82%D0%B0%D1%82%D0%B8%2C%20%D0%BE%20%D1%82%D0%B0%D0%B1%D0%BB%D0%B5%D1%82%D0%BA%D0%B0%D1%85.%20%D0%90%20%D1%82%D0%B5%D0%BF%D0%B5%D1%80%D1%8C%20%D1%87%D0%B8%D1%82%D0%B0%D0%B9.%20%3C%D0%B0%20href%3Dhttps%3A%2F%2Faito.org%2Fwiki%2Findex.php%2FTalk%3AAdnan_sami_song_mp3_download_pagalworld%23Some_information_about_meds.%3E%D0%BD%D0%B5%D0%BA%D0%BE%D1%82%D0%BE%D1%80%D0%B0%D1%8F%20%D0%B8%D0%BD%D1%84%D0%BE%D1%80%D0%BC%D0%B0%D1%86%D0%B8%D1%8F%20%D0%BE%20%D0%BB%D0%B5%D0%BA%D0%B0%D1%80%D1%81%D1%82%D0%B2%D0%B0%D1%85.%3C%20%2F%20a%3E%20%3Ca%20href%3Dhttps%3A%2F%2Falmohaimeed.net%2Fm%20%2F%20ar%20%2F%2097%3E%D0%92%D1%81%D0%B5%20%D0%BE%20%D0%BB%D0%B5%D0%BA%D0%B0%D1%80%D1%81%D1%82%D0%B2%D0%B0%D1%85.%3C%20%2F%20a%3E%20%3Ca%20href%3Dhttp%3A%2F%2Fafootincoldwater.com%20%2F%20phpafic%20%2F%20viewtopic.php%3Ff%3D6%26t%3D752%3E%D0%BB%D1%83%D1%87%D1%88%D0%B0%D1%8F%20%D0%B8%D0%BD%D1%84%D0%BE%D1%80%D0%BC%D0%B0%D1%86%D0%B8%D1%8F%20%D0%BE%20%D0%BB%D0%B5%D0%BA%D0%B0%D1%80%D1%81%D1%82%D0%B2%D0%B0%D1%85.%3C%20%2F%20a%3E%202f6fcf1%5DSome%20about%20drugs.%5B%2Furl%5D%20%5Burl%3Dhttps%3A%2F%2Fethereummining.ru%2Fkupit-efir%2F%23comment-31654%5DAll%20information%20about%20medicament.%5B%2Furl%5D%20%5Burl%3Dhttp%3A%2F%2Fjagan84.altervista.org%2Fforum%2Fviewtopic.php%3Fp%3D359278%23359278%5DAll%20trends%20of%20drug.%5B%2Furl%5D%20e1_4869>Best trends of medicines.</a> f1df6d0

  5. 匿名用户

    Meds information leaflet. Drug Class. <a href="https://viagra4u.top">cost viagra pills</a> in US. Best about medicines. Get here. <a href=https://hoouri.com/blog/%d8%aa%d8%b9%d8%b1%d9%81-%d8%b9%d9%84%d9%89-%d8%b1%d8%ac%d9%8a%d9%85-%d8%a7%d9%84%d9%83%d9%8a%d8%aa%d9%88-%d9%84%d8%a5%d9%86%d9%82%d8%a7%d8%b5-%d8%a7%d9%84%d9%88%d8%b2%d9%86-%d8%a8%d8%b3%d8%b1%d8%b9/#comment-11604>Best about medicine.</a> <a href=https://bepearlschic.com/product/14k-4-5mm-black-round-freshwater-cultured-pearl-stud-earrings/#comment-15923>Everything what you want to know about pills.</a> <a href=https://sensei-fan.com/forums/topic/l-i-v-e-san-marino-gibraltar-live-stream-watch-online/#post-90274>Best news about drugs.</a> efd2ac8

  6. 匿名用户

    Pills prescribing information. Generic Name. <a href="https://viagra4u.top">cost generic viagra prices</a> in the USA. Best what you want to know about meds. Get now. <a href=https://925.lviv.ua/razdeliteli-t0017>Some information about drug.</a> <a href=http://clickon.com.ua/shokolad-belyi-torras-postres-blanc-200-g-ispaniia>Some what you want to know about drugs.</a> <a href=https://www.bestattung-glueck.at/sterbefall.php?id=266&name=Maria-Wieland>All information about drugs.</a> 07_b585

  7. 匿名用户

    Pills information. Generic Name. <a href="https://viagra4u.top">can i purchase viagra without insurance</a> in Canada. Best information about meds. Get information now. <a href=https://almohaimeed.net/m/ar/311>Everything information about medicine.</a> <a href=https://lensesonline.kz/product/63/?rating=1>Some information about medicines.</a> <a href=https://www.asociacemba.cz/forums/topic/comprar-viagra-en-santa-cruz-bolivia-2/page/10/#post-731186>All news about medicine.</a> f1df6d0

  8. 匿名用户

    Drug information for patients. Effects of Drug Abuse. <a href="https://prednisone4u.top">cost generic prednisone</a> in Canada. All what you want to know about medicine. Get information now. <a href=https://hoteltouringmisano.it/hotel%203%20stelle%20misano/animazione-in-spiaggia-e-baby-club/>Some trends of medicine.</a> <a href=https://almohaimeed.net/m/ar/56>All about medicament.</a> <a href=http://pogaduchyweselne.pl/temat-Tik-Tok-Hearts-Free-NOVEMBER-2020?pid=96470#pid96470>All news about medicines.</a> ac8b9e7

  9. 匿名用户

    Medicines information for patients. What side effects can this medication cause? <a href="https://prednisone4u.top">can i buy cheap prednisone prices</a> in USA. Best what you want to know about pills. Get now. <a href=https://www.bookclubcookbook.com/product/of-cumin-bondage/#comment-127521>Actual about medicine.</a> <a href=http://vuanh.com.vn/thiet-bi-tin-hoc/dien-thoai-uniden-as7101/>Actual news about medicine.</a> <a href=https://eskogoli.com/2020/09/15/ipl-2020-kolkata-knight-riders/#comment-5801>Some trends of medicament.</a> ac8b9e7

  10. 匿名用户

    Drugs information leaflet. Cautions. <a href="https://prednisone4u.top">buying prednisone price</a> in USA. Some news about medication. Read here. <a href=https://jamtlandsguiden.se/jamtlandssangen/#comment-31275>All what you want to know about drug.</a> <a href=https://lovejapan.org/volunteer/reunion/forums/topic/comprar-cialis-en-andorra-sin-receta/#post-823037>All about meds.</a> <a href=http://bpo.gov.mn/content/376>Best about medicament.</a> 2ac8b9e

  11. 匿名用户

    Meds information leaflet. What side effects can this medication cause? <a href="https://viagra4u.top">how to buy generic viagra prices</a> in Canada. Some information about medicines. Read information here. <a href=https://amp.en.vaskar.co.in/translate/1?to=ru&from=en&source=Drug%20information.%20Long-Term%20Effects.%20%3Ca%20href%3D%22https%3A%2F%2Fviagra4u.top%22%3Ecan%20i%20purchase%20generic%20viagra%20without%20rx%3C%2Fa%3E%20in%20Canada.%20All%20trends%20of%20drug.%20Read%20information%20now.%20%0D%0A%5Burl%3Dhttps%3A%2F%2Fcafelabo.jp%2F%25e3%2583%2596%25e3%2583%25ab%25e3%2583%25bc%25e3%2583%259e%25e3%2582%25b0%25e3%2582%25b3%25e3%2583%25bc%25e3%2583%2592%25e3%2583%25bc%2F%23comment-1124%5DBest%20trends%20of%20medicines.%5B%2Furl%5D%20%5Burl%3Dhttp%3A%2F%2Fprinciple.jp%2Fbbs5%2Fc-board.cgi%3Fcmd%3Done%3Bno%3D4138334%3Bid%3Dhijirin%5DSome%20information%20ab%5B%2Furl%5D%20%5Burl%3Dhttps%3A%2F%2Fgoofibooks.com%2Fkids-time-looking-for-branch-coordinator%2F%23comment-26591%5DAll%20trends%20of%20drugs.%5B%2Furl%5D%20%20cf11c4_%20&result=%D0%98%D0%BD%D1%84%D0%BE%D1%80%D0%BC%D0%B0%D1%86%D0%B8%D1%8F%20%D0%BE%20%D0%BD%D0%B0%D1%80%D0%BA%D0%BE%D1%82%D0%B8%D0%BA%D0%B0%D1%85.%20%D0%94%D0%BE%D0%BB%D0%B3%D0%BE%D1%81%D1%80%D0%BE%D1%87%D0%BD%D1%8B%D0%B5%20%D0%AD%D1%84%D1%84%D0%B5%D0%BA%D1%82%D1%8B.%20%3Ca%20href%3D%22https%3A%2F%2Fviagra4u.top%22%20%3E%20%D0%BC%D0%BE%D0%B3%D1%83%20%D0%BB%D0%B8%20%D1%8F%20%D0%BA%D1%83%D0%BF%D0%B8%D1%82%D1%8C%20%D0%B4%D0%B6%D0%B5%D0%BD%D0%B5%D1%80%D0%B8%D0%BA%20%D0%92%D0%B8%D0%B0%D0%B3%D1%80%D1%8B%20%D0%B1%D0%B5%D0%B7%20rx%3C%20%2F%20a%20%3E%20%D0%B2%20%D0%9A%D0%B0%D0%BD%D0%B0%D0%B4%D0%B5.%20%D0%92%D1%81%D0%B5%20%D1%82%D0%B5%D0%BD%D0%B4%D0%B5%D0%BD%D1%86%D0%B8%D0%B8%20%D1%80%D0%B0%D0%B7%D0%B2%D0%B8%D1%82%D0%B8%D1%8F%20%D0%BD%D0%B0%D1%80%D0%BA%D0%BE%D1%82%D0%B8%D0%BA%D0%BE%D0%B2.%20%D0%A7%D0%B8%D1%82%D0%B0%D0%B9%D1%82%D0%B5%20%D0%B8%D0%BD%D1%84%D0%BE%D1%80%D0%BC%D0%B0%D1%86%D0%B8%D1%8E%20%D0%BF%D1%80%D1%8F%D0%BC%D0%BE%20%D1%81%D0%B5%D0%B9%D1%87%D0%B0%D1%81.%20%5Burl%3Dhttps%3A%2F%2Fcafelabo.jp%2F%E3%83%96%E3%83%AB%E3%83%BC%E3%83%9E%E3%82%B0%E3%82%B3%E3%83%BC%E3%83%92%E3%83%BC%2F%23comment-1124%5D%D0%BB%D1%83%D1%87%D1%88%D0%B8%D0%B5%20%D1%82%D0%B5%D0%BD%D0%B4%D0%B5%D0%BD%D1%86%D0%B8%D0%B8%20%D0%BB%D0%B5%D0%BA%D0%B0%D1%80%D1%81%D1%82%D0%B2%D0%B5%D0%BD%D0%BD%D1%8B%D1%85%20%D1%81%D1%80%D0%B5%D0%B4%D1%81%D1%82%D0%B2.%5B%2Furl%5D%20%5Burl%3Dhttp%3A%2F%2Fprinciple.jp%2Fbbs5%2Fc-board.cgi%3Fcmd%3Done%3Bno%3D4138334%3Bid%3Dhijirin%5D%D0%BD%D0%B5%D0%BA%D0%BE%D1%82%D0%BE%D1%80%D0%B0%D1%8F%20%D0%B8%D0%BD%D1%84%D0%BE%D1%80%D0%BC%D0%B0%D1%86%D0%B8%D1%8F%20ab%20%5B%2Furl%5D%20%5Burl%3Dhttps%3A%2F%2Fgoofibooks.com%20%2F%20kids-time-looking-for-branch-coordinator%20%2F%20%23comment-26591%5D%D0%B2%D1%81%D0%B5%20%D1%82%D0%B5%D0%BD%D0%B4%D0%B5%D0%BD%D1%86%D0%B8%D0%B8%20%D0%BD%D0%B0%D1%80%D0%BA%D0%BE%D1%82%D0%B8%D0%BA%D0%BE%D0%B2.%5B%2Furl%5D%20cf11c4_>Actual trends of medicine.</a> <a href=https://sujaco.com/product/dress-17/#comment-13335>All trends of medicines.</a> <a href=https://www.bestattung-glueck.at/sterbefall.php?id=43&name=Monika-Richter&timestamp=1581980400>Some about medication.</a> 8b9e7f1

  12. 匿名用户

    Drug prescribing information. What side effects can this medication cause? <a href="https://viagra4u.top">can i purchase cheap viagra no prescription</a> in US. Everything about medicine. Read here. <a href=http://studybscnursinginbangalore.com/infant-jesus-college-of-nursing>Best news about meds.</a> <a href=http://jacquesrosas.com/gallery/epson-mfp-image/#main/#comment-562396>Best about drug.</a> <a href=http://japaninfo.jp/recuruitforum/?mod=document&uid=669#kboard-comments-669>Some information about meds.</a> e7f1df6

  13. 匿名用户

    Pills information sheet. What side effects can this medication cause? <a href="https://prednisone4u.top">where can i buy cheap prednisone pill</a> in Canada. Some about medicine. Get information here. <a href=http://www.durango.co.kr/m/sub/sub03_03.php?mNum=3&sNum=3&boardid=board2&mode=view&idx=16>All what you want to know about drug.</a> <a href=http://blog.asi-italia.org/2019/01/buon-anno-nuovo-e-buone-nuove-sul-blog/#comment-362045>Some trends of medicine.</a> <a href=http://magic-stones.com/product/-762/>Actual information about medicine.</a> 878defd

  14. 匿名用户

    Medicine prescribing information. Effects of Drug Abuse. <a href="https://viagra4u.top">can you get generic viagra without insurance</a> in the USA. Some what you want to know about drug. Get here. <a href=https://headofbed.com/origins-opioid-epidemic/#comment-879>All information about drugs.</a> <a href=http://bpo.gov.mn/content/563>Everything information about medicine.</a> <a href=https://lycium.jp/cau-hoi-thuong-gap-khi-dung-lycium-serum/>Actual what you want to know about medicine.</a> 71878de

  15. 匿名用户

    Drug prescribing information. Drug Class. <a href="https://prednisone4u.top">where buy prednisone prices</a> in US. All about medicine. Get here. <a href=http://nvngaynay.com/lien-lac/#comment-95768>All about medicine.</a> <a href=https://lomasrankiao.net/paloma-mami-se-convierte-en-la-mami-del-perreo/#comment-63490>Everything trends of drugs.</a> <a href=http://blog.qooza.hk/warren10hk?eid=18434073>Everything news about meds.</a> c8b9e7f

给我留言

评论内容