Swoole可以执行异步操作,因此在web页面将请求提交给Swoole处理后,不用等待返回结果,页面也不会卡顿。Swoole在后台将耗时长的操作进行异步处理,从而改善用户体验,例如本节要给大家讲解的Swoole处理邮件。
准备
请按照上一节:Swoole实例:1-使用Composer构建项目,构建好项目。并使用composer安装邮件发送组件:phpmailer。
composer require phpmailer/phpmailer
主程序
在目录:src/App/下建立Mail.php,用作Swoole服务端主程序。
<?php namespace Helloweba\Swoole; use swoole_server; use PHPMailer\PHPMailer\PHPMailer; use PHPMailer\PHPMailer\Exception; class Mail { protected $serv; protected $host = '127.0.0.1'; protected $port = 9502; // 进程名称 protected $taskName = 'swooleMailer'; // PID路径 protected $pidPath = '/run/swooleMail.pid'; // 设置运行时参数 protected $options = [ 'worker_num' => 4, //worker进程数,一般设置为CPU数的1-4倍 'daemonize' => true, //启用守护进程 'log_file' => '/data/logs/swoole.log', //指定swoole错误日志文件 'log_level' => 0, //日志级别 范围是0-5,0-DEBUG,1-TRACE,2-INFO,3-NOTICE,4-WARNING,5-ERROR 'dispatch_mode' => 1, //数据包分发策略,1-轮询模式 'task_worker_num' => 4, //task进程的数量 'task_ipc_mode' => 3, //使用消息队列通信,并设置为争抢模式 //'heartbeat_idle_time' => 600, //一个连接如果600秒内未向服务器发送任何数据,此连接将被强制关闭 //'heartbeat_check_interval' => 60, //启用心跳检测,每隔60s轮循一次 ]; // 邮件服务器配置 protected $mailConfig = [ 'smtp_server' => 'smtp.163.com', 'username' => 'example@163.com', 'password' => '',// SMTP 密码/口令 'secure' => 'ssl', //Enable TLS encryption, `ssl` also accepted 'port' => 465, // tcp邮件服务器端口 ]; // 安全密钥 protected $safe