异步发邮件

公司开发了一个项目。当用户点击某个操作时,会发送两封邮件出去,当点击时,反应很慢,用户体验不好,而且导致重复提交。最后我想到用异步实现发邮件。开始想到是用队列来实现,就要安装个队列服务器,再三思考没必要这么弄。思路是当用户点击该操作时,将发送的邮箱、主题、内容写入到sqlite中,然后通过cron计划任务来实现发送邮件。仅此而已。

aysncmail.php:发送邮件cron.php每分钟执行一次。如何有记录 发送。发送后自动清除。

<?php
if ($db = sqlite_open('./mail.db', 0666, $sqliteerror))
{ 
} 
else
{
    die($sqliteerror);
} 
$result = sqlite_query($db, 'SELECT mailto, subject,content FROM mail', SQLITE_ASSOC);
$num = sqlite_num_rows ($result);
if ($num <= 0)
{
    exit;
} 
else
{
    while ($entry = sqlite_fetch_array($result, SQLITE_ASSOC))
    {
        sendmail($entry['mailto'], $entry['subject'], $entry['content']);
    } 
    sqlite_exec($db, "delete from mail", $error);
} 
?>
插入sqlite操作:
$a['a']='aaaaaaaaaa';
        $ato=$a['a'];
        $to = "mickelfeng@gmail.com";
        $subject = "Course Reservation";
        $tmessage = "Hi Teacher aaaaaaaaaaaa";
        $from = "school@qq.com";
        $header = "From:My Name<school@qq.com>\r\n";
        $header .= "Reply-To: My Name<school@qq.com>\r\n";
        $header .= "Return-Path: My Name<school@qq.com>\r\n";

        $msg = "test;
        $msg = iconv("GBK", "UTF-8", $msg);
        if ($db = sqlite_open('./mail.db', 0666, $sqliteerror))
        {
            $sql= "insert into mail values('mickelfeng@163.com','$ato','$tmessage');";
            sqlite_query($db, $sql);
        }else{
               echo "error";
        }

转载于:https://my.oschina.net/mickelfeng/blog/118080

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值