php异步群发邮件

当程序执行群发邮箱的时候,会出现等待程序反馈时间太长 这对于用户体验来说是很不好的,用户大多会在程序没有执行完就关闭程序,这样发送邮件也会中断,所以我们的解决思路应该是用异步去执行发邮件的过程。
一、创建一个连接用户操作页面和执行发件的方法:
private function connect($host, $path, $param = array()){
$query = isset($param) ? http_build_query($param) : '';
$port = 80;
$errno = 0;
$errstr = 'error';
$timeout = 30; //连接超时时间(s)
$fp = @fsockopen($host, $port, $errno, $errstr, $timeout);
if (!$fp) {
return '连接失败';
}
if ($errno || !$fp) {
return $errstr;
河南网站建设公司价格,品牌型网站建设价格,商城网站建设价格,响应式网站建设价格,河南网站设计制作
}
stream_set_blocking($fp,0); //非阻塞
stream_set_timeout($fp, 1);//响应超时时间(s)
$out = "post " . $path . " http/1.1\r\n";
$out .= "host:" . $host . "\r\n";
$out .= "content-length:" . strlen($query) . "\r\n";
$out .= "content-type:application/x-www-form-urlencoded\r\n";
$out .= "connection:close\r\n\r\n";
$out .= $query;
$result = @fputs($fp, $out);
@fclose($fp);
return $result;
}
二、用户操作方法 传递参数页面
河南网站建设公司价格,品牌型网站建设价格,商城网站建设价格,响应式网站建设价格,河南网站设计制作
public function index(){
$param = array(
0 => 'xxx@qq.com',
1 => 'xxx@qq.com',
);
$url='http://'.$_server['http_host']..'/sends/emails';
$info=parse_url($url);
/*dump($info);*/ $res=$this>connect($info["host"],$info['path'],$param);
/*调用方法*/
echo '发送成功'; /*提示用户发送成功*/
}
三、发送邮件
public function emails(){
set_time_limit(0);/*设置程序运行时间没有限制防止运行超时*/
河南网站建设公司价格,品牌型网站建设价格,商城网站建设价格,响应式网站建设价格,河南网站设计制作
ignore_user_abort(true);//设置与客户机断开是否会终止执行
$data=i('post.');
$email='';
$sendtitle="邮件标题";
$sendinfo='邮件内容';
# $send=array(
'title'=>$sendtitle,
'detail'=>$sendinfo,
);
$mail= new service\sendemailservice();
foreach ($data as $k => $v) {
$email.=$v.'|';
$tomail=$v;
$info=$mail->sendemail($send,$tomail);
河南网站建设公司价格,品牌型网站建设价格,商城网站建设价格,响应式网站建设价格,河南网站设计制作
/*执行发送邮箱*/
}
$log_name = "public/notify_url.log"; //log文件路径
$this>log_result($log_name,$email.date(time(),'h:i:s').';');
/*记录一下日志看程序是否执行发件*/
}
php发送邮件截
用户运行结果(以上是测试)
php发送邮件截
日志查看
php发送邮件截
php发送邮件截
测试的两个邮箱都已经收到邮件
上一个:外贸SOHO为什么一定要建网站?
下一个:暂无
吴江网站建设,吴江做网站,吴江网站设计