本文只做自己学习笔记记录,如有涉及他人版权,请联系我第一时间修改删除
背景介绍:
当用户触发了某个操作后,发送短信消息给另外的一个或者多个人;如果用户量比较少,同时发送消息的人也比较少时,直接在触发操作完成时发送消息即可,但是如果同时发送消息的人非常多咋办?到时系统可能会一直卡在“消息正在发送中......” 这种状态,用户体验太差了。想到可以使用异步的方式,当用户触发操作完成后,把发送消息的任务放到后台执行。
放到后台执行,想到了两种解决方式:
1. Linux 下的 cron
每个触发发送消息的动作,统一将相关信息(接受人,消息内容等信息)保存到文件、内存或者数据库等其它可以持久化数据的地方,然后在服务器做一个定时任务,间隔读取文件、缓存(Redis, Memcahce)或者数据库中的信息,最后发送。但是服务器(Linux 服务器)的定时任务一般是每分钟执行一次;当然有解决方法,可以实现秒级发送,但是感觉不太好
。弃用该方式。
2. 使用Swoole,不做过多解释,代码很简单:
Swoole客户端代码: SwooleClient.php
class Swoole_SwooleClient
{
private $client;
public function __construct()
{
$this->client = new swoole_client(SWOOLE_SOCK_TCP);
}
public function connect()
{
if (!$this->client->connect('127.0.0.1', 9502, 1)) {
throw new Exception(sprintf('Swoole E