<?php
/**
* @Author: Awe
* @Date: 2016-10-26 17:26:54
* @Last Modified by: Awe
* @Last Modified time: 2017-05-30 12:57:18
*/
class EmailBusiness extends AbstractModel{
public function sendEmail(){
$sql = "SELECT email,body,`subject`,name FROM hr_send_email_all_task WHERE is_lock=0 AND (send_status=0 OR send_status=2);";
$rows = $this->db()->find($sql);
foreach ($rows as $val) {
$accepter = $val['email'];
$tite = $val['subject'];
$bodys = $val['body'];
$result = Common::Postmail($accepter ,$tite , $bodys);
$this->setsendemailalltask($result);
}
echo "success";
}
//更新邮件发送状态
private function setsendemailalltask($result) {
$now = date('Y-m-d H:i:s');
if ($result) {
$sql = "UPDATE hr_send_email_all_task SET is_lock=1,lock_date='{$now}',send_status=1,send_date='{$now} '";
} else {
$sql = "UPDATE hr_send_email_all_task SET is_lock=1,lock_date='{$now}',send_status=2 ";
}
$this->db()->Exec($sql);
}
public function addMailQueue(){
$file = APP_PATH . "/log/tmp/mailQueue.lock.txt" ;
$fp = fopen($file,'a+');
if (flock($fp, LOCK_EX)) {
$logFile = Log_file::getInstance(array('filename' => "addMailQueueLog" ));
$lock_message = "file is locked time is :".date("Y-m-d H:i:s", time())." " .PHP_EOL;
fwrite($fp, $lock_message);
$result = $this->doAddMailQueue();
$logFile->Write("info" , $result );
echo $result ;
flock($fp,LOCK_UN);
}else{
echo "其他的进程正在处理。。。";
}
fclose($fp);
}
public function doAddMailQueue(){
$sql = "select * from mail_queue where status = 0 and ischeck = '1' order by create_date desc limit 1 " ;
$info = $this->db()->findOne($sql);
if(empty($info)){
return "no data";
}
$file = $info['file'];
$body = $info['content'];
$subject = $info['title'];
$emailType = "queue_{$info['id']}";
$pre_count = ;
if(!file_exists($file)){
return "file $file is not exists";
}
$csvreader = new CsvReader( $file);
$line_number = $csvreader->get_lines();
$date = date("Y-m-d H:i:s");
$sqlFile = str_replace("\\", "/", APP_PATH) . "/tmp/"."sql_" . date("Y_m_d_H_i_s",time()) . ".txt";
$page = intval($line_number/$pre_count)+;
$successNum = ;
for ($i = ;$i < $page;$i++){
$str = '' ;
$data = $csvreader->get_data($pre_count , $i * $pre_count);
if(empty($data)){
continue ;
}
foreach ($data as $key => $value) {
$email = isset($value[]) ? trim($value[]) : '' ;
if(!filter_var($email, FILTER_VALIDATE_EMAIL)){
continue ;
}
$bodys = $this->replaceEmailBody($email , $body , $emailType );
$str.= $email . "$#####$$" . $bodys . "$#####$$" . $date ."$#####$$" . $subject ."v_@rdasd32eplace@" ;
$successNum++;
}
$str = rtrim($str , "v_@rdasd32eplace@" );
file_put_contents($sqlFile , $str , FILE_APPEND );
//unset($psql);
unset($data);
} $sql = "LOAD DATA INFILE '{$sqlFile}' INTO TABLE email_all_task CHARACTER SET utf8 FIELDS TERMINATED BY '$#####$$' LINES TERMINATED BY 'v_@rdasd32eplace@' (email,body,create_date,subject)" ;
$num = $this->db()->Exec($sql);
if($num > ){
$now =date("Y-m-d H:i:s") ;
$this->db()->Exec("update mail_queue set status = 1 ,success_num = '{$successNum}' , operate_date = '{$now}' where id = '{$info['id']}' ");
//删除csv文件
@unlink($file);
return "success---编号id为:{$info['id']}---标题是:{$subject}";
}else{
return "fail";
} }
function replaceEmailBody($email , $content , $emailType = '' ){
$url = "http://testwww.shixiba.com/analyze.php?email={$email}&emailType={$emailType}";
$content .= '<img src="'.$url.'" style="display:none;">' ;
return $content ;
} }

MySQL LOAD DATA的更多相关文章

  1. mysql load data infile的使用 和 SELECT into outfile备份数据库数据

    LOAD DATA [LOW_PRIORITY | CONCURRENT] [LOCAL] INFILE 'file_name.txt' [REPLACE | IGNORE] INTO TABLE t ...

  2. MySQL Load Data InFile 数据导入数据库

    常用如下: Load Data InFile 'C:/Data.txt' Into Table `TableTest` Lines Terminated By '\r\n'; 这个语句,字段默认用制表 ...

  3. Mysql load data infile 导入数据出现:Data truncated for column

    [1]Mysql load data infile 导入数据出现:Data truncated for column .... 可能原因分析: (1)数据库表对应字段类型长度不够或修改为其他数据类型( ...

  4. Mybatis拦截器 mysql load data local 内存流处理

    Mybatis 拦截器不做解释了,用过的基本都知道,这里用load data local主要是应对大批量数据的处理,提高性能,也支持事务回滚,且不影响其他的DML操作,当然这个操作不要涉及到当前所lo ...

  5. mysql load data 乱码的问题

    新学mysql在用load data导入txt文档时发现导入的内容,select 之后是乱码,先后把表,数据库的字符集类型修改为utf8,但还是一样,最后在 http://bbs.chinaunix. ...

  6. 解决ubuntu server mysql load data infile 导入本地文件ERROR 1148 (42000)错误。

    问题:在ubuntu server 上使用apt-get 安装完 mysql 使用 load data infile 出现错误,错误代码如下: ERROR (): The used command i ...

  7. 【转载】Mysql load data infile用法(万级数据导入,在几秒之内)

    https://blog.csdn.net/u014082714/article/details/53173975 http://blog.itpub.net/26506993/viewspace-2 ...

  8. mysql load data导入脚本

    # !/bin/bash ############中文说明###################### #本程序的一些提示需要中文支持,如系统没有安装中文包,请先安装:yum -y groupinst ...

  9. MySql LOAD DATA 使用

    load的语法 LOAD DATA [LOW_PRIORITY | CONCURRENT] [LOCAL] INFILE 'file_name.txt' [REPLACE | IGNORE] INTO ...

  10. 浅谈MySQL load data local infile细节 -- 从源码层面

    相信大伙对mysql的load data local infile并不陌生,今天来巩固一下这里面隐藏的一些细节,对于想自己动手开发一个mysql客户端有哪些点需要注意的呢? 首先,了解一下流程: 3个 ...

随机推荐

  1. 从0开始用spring boot编写分布式配置中心-peppa

    欢迎大家一起来编写peppa github地址: github 交流群: 目前市面上比较流行的分布式配置中心有disconf.apollo,用起来还是比较方便的,然而由于在权限管理这块做得不够好,导致 ...

  2. 将中国标准时间转成yyyy-MM-dd

    public static void main(String[] args) throws ParseException { String s = "Tue Jul 12 00:00:00 ...

  3. JAVA中List的几个方法

    add()方法.插入某个位置的数据,他有两个参数一个参数是下标,一个参数是元素.需要注意的是下标大小应该小于等于List集合大小,否则就会抛出下标越界异常! 代码:    public static ...

  4. UGUI防止穿透和判断点击的是否是UI

    用UGUI做的UI,比如按钮,点击一下,后面的3D物体也会接收到点击事件! 1.UGUI自带的防穿透代码: if (EventSystem.current.IsPointerOverGameObjec ...

  5. Opencv threshold

    图像的二值化就是将图像上的像素点的灰度值设置为0或255,这样将使整个图像呈现出明显的黑白效果.在数字图像处理中,二值图像占有非常重要的地位,图像的二值化使图像中数据量大为减少,从而能凸显出目标的轮廓 ...

  6. Solidity智能合约调用智能合约

    来源:https://medium.com/@blockchain101/calling-the-function-of-another-contract-in-solidity-f9edfa921f ...

  7. 【解决】SOUI向导生成项目(VC2013以上版本编译时)无法运行XP解决

    对于SOUI向导生成的项目,无法在XP运行(提示 不是有效的WIN32程序 ) 即便设置为: 也无效,使用eXeScope打开发现最低系统要求是6.0,也就是说最少要WINXP以上,例如WIN7才能运 ...

  8. 转:开启命令行下的社交-webqq脚本

    最近一直在命令行下工作,除了 Google Chrome,几乎很少接触 GUI 相关的软件.前段时间把手机上的 QQ 给卸载了,希望可以把时间凝聚在更加有价值的位置,今天突然又想起了这个软件,突发奇想 ...

  9. Sublime Text 3 -mac简体中文汉化包下载及教程

    Sublime Text 3下载 官方下载地址:http://www.sublimetext.com/3 汉化包链接 1.将上面要求下载的sublime_text_3.zip 文件解压,得到的Defa ...

  10. 4.4.3 Java中的指针:Unsafe类

    java多线程编程的无锁CAS底层都是通过 Unsafe进行操作的:源码如下 public final boolean compareAndSet(int expect, int update) { ...