WordPress – 异步发送邮件,解决发送邮件阻塞耗时的问题
本文作者:StubbornHuang
版权声明:本文为站长原创文章,如果转载请注明原文链接!
原文标题:WordPress – 异步发送邮件,解决发送邮件阻塞耗时的问题
原文链接:https://www.stubbornhuang.com/2621/
发布于:2023年05月19日 9:17:36
修改于:2023年05月19日 9:18:58
在WordPress中,站长为了让自己更加了解站点的运行情况,一般新用户注册、登录或者用户评论时都会发送邮件通知站长本人,或者发送相关的通知给用户,但是由于在WordPress发送邮件的方式是同步的,而我又是使用的qq邮箱的smtp发送邮件,服务器不是在国内,这导致用户登录或者评论文章都要好久的时间,如果可以异步发送邮件就好了,不阻塞用户当前操作,改善用户体验。
然后就找到了这个链接:https://wordpress.stackexchange.com/questions/185295/how-to-make-wordpress-emails-async
主要的异步发送邮件代码如下:
/**
* 异步发送邮件
*/
if ( ! defined( 'DOING_CRON' ) || ( defined( 'DOING_CRON' ) && ! DOING_CRON ) ) {
function wp_mail() {
// 获取 wp_mail 函数的参数
$args = func_get_args();
// 添加一个随机值以避免重复发送,参考: http://codex.wordpress.org/Function_Reference/wp_schedule_single_event
$args[] = mt_rand();
// 5 秒之后发送邮件
wp_schedule_single_event( time() + 5, 'cron_send_mail', $args );
}
}
add_action( 'cron_send_mail', function () {
$args = func_get_args();
// 移除上面添加的随机数
array_pop( $args );
call_user_func_array( 'wp_mail', $args );
}, 10, 10 );
上述代码重写了非CRON请求的wp_mail
函数,使用wp_schedule_single_event
做定时任务,在5秒之后才发送邮件,这样就可以完美的解决同步发送邮件会阻塞的缺点,是一个非常好的异步解决方案。
参考链接
当前分类随机文章推荐
- WordPress - 异步发送邮件,解决发送邮件阻塞耗时的问题 阅读62次,点赞0次
- WordPress - Windows使用PhpStudy本地部署WordPress 阅读3780次,点赞0次
- WordPress - wp_mail发送邮件失败,使用插件或者纯代码方式添加SMTP邮件发送功能 阅读1161次,点赞0次
- WordPress - 在erphpdown插件中增加在隐藏文章指定位置之后文章内容的付费查看功能 阅读1012次,点赞0次
- WordPress - 在用户注册页面显示自定义提示信息 阅读1544次,点赞0次
- WordPress - 增加百度统计代码 阅读3106次,点赞0次
- WordPress - 插件WP Editor.md 在网站更换为https后无法正确加载 阅读4066次,点赞0次
- WordPress - 查询当前登录用户在一天之内的评论总数量 阅读2056次,点赞0次
- WordPress - home_url()函数,获取网站主页url链接 阅读886次,点赞0次
- WordPress - get_edit_post_link函数详解 阅读1109次,点赞0次
全站随机文章推荐
- C++ - 在某一天某个时间点定时执行任务,比如2022年9月19日晚上9点准点执行发送邮件函数 阅读420次,点赞0次
- C++ 回调函数 阅读3012次,点赞0次
- C++ - 在Windows/Linux上创建单级目录以及多级目录的跨平台方法 阅读1114次,点赞0次
- 姿态估计之COCO数据集骨骼关节keypoint标注对应 阅读9913次,点赞5次
- 书籍翻译 – Fundamentals of Computer Graphics, Fourth Edition,第6章 Transformation Matrices中文翻译 阅读1700次,点赞7次
- failed to find an available destination > EOF 阅读18261次,点赞32次
- 深度学习 - Transformer详细注释 阅读522次,点赞0次
- C++ – 字节数组byte[]或者unsigned char[]与float的相互转换 阅读1956次,点赞0次
- Centos7 编译C++项目错误解决 : terminate called after throwing an instance of 'std::regex_error' 阅读2562次,点赞1次
- Pytorch - torch.unsqueeze和torch.squeeze函数 阅读337次,点赞0次
评论
169