swoole异步群发邮件

22 篇文章 1 订阅

服务器代码

先用cli方式启动服务器文件

<?php 
$serv = new swoole_server("127.0.0.1", 9501);

//设置异步任务的工作进程数量
$serv->set(array('task_worker_num' => 4));

//监听数据接收事件
$serv->on('receive', function($serv, $fd, $from_id, $data) {
    //投递异步任务
    $task_id = $serv->task($data);//非阻塞
    echo "同步代码执行完成\n";
});

//处理异步任务
$serv->on('task', function ($serv, $task_id, $from_id, $data) {
    handleFun($data);
    //返回任务执行的结果
    $serv->finish("finish");
});

//处理异步任务的结果
$serv->on('finish', function ($serv, $task_id, $data) {
    echo "异步任务执行完成";
});

$serv->start();

function handleFun($data){
    $value = null;
    $arr = json_decode($data,true);
    foreach ($arr as $value) {
        mail($value['to'],$value['subject'],$value['content'],$value['headers']);
    }
}

客户端代码

<?php
class Client
{
    public function send($msg){
        $client = new swoole_client(SWOOLE_SOCK_TCP);
        //连接到服务器
        if (!$client->connect('127.0.0.1', 9501, 0.5))
        {
            $this->write("connect failed.");
        }
        //向服务器发送数据
        if (!$client->send($msg))
        {
            $this->write("send ".$msg." failed.");
        }
        //关闭连接
        $client->close();
    }
    private function write($str){
        $path = "/tmp/synClient.log";
        $str = "[".date("Y-m-d H:i:s")."]".$str;
        $str .= PHP_EOL;
        file_put_contents($path,$str,FILE_APPEND);
    }
}

测试文件

<?php
include "Client.php";
$params = [
    [
        'to'        => '2788828128@qq.com',
        'subject'   => '123',
        'content'   => '888',
        'headers'   => 'From: webmaster@example.com'
    ],
    [
        'to'        => '2788828128@qq.com',
        'subject'   => '123',
        'content'   => '888',
        'headers'   => 'From: webmaster@example.com'
    ],  

];
$msg = json_encode($params);
$client = new Client();
$client->send($msg);
echo "[".date("Y-m-d H:i:s")."]继续忙其他的".PHP_EOL;

执行结果

这里写图片描述

这里写图片描述

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值