MySQL LOAD DATA
<?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的更多相关文章
- mysql load data infile的使用 和 SELECT into outfile备份数据库数据
LOAD DATA [LOW_PRIORITY | CONCURRENT] [LOCAL] INFILE 'file_name.txt' [REPLACE | IGNORE] INTO TABLE t ...
- MySQL Load Data InFile 数据导入数据库
常用如下: Load Data InFile 'C:/Data.txt' Into Table `TableTest` Lines Terminated By '\r\n'; 这个语句,字段默认用制表 ...
- Mysql load data infile 导入数据出现:Data truncated for column
[1]Mysql load data infile 导入数据出现:Data truncated for column .... 可能原因分析: (1)数据库表对应字段类型长度不够或修改为其他数据类型( ...
- Mybatis拦截器 mysql load data local 内存流处理
Mybatis 拦截器不做解释了,用过的基本都知道,这里用load data local主要是应对大批量数据的处理,提高性能,也支持事务回滚,且不影响其他的DML操作,当然这个操作不要涉及到当前所lo ...
- mysql load data 乱码的问题
新学mysql在用load data导入txt文档时发现导入的内容,select 之后是乱码,先后把表,数据库的字符集类型修改为utf8,但还是一样,最后在 http://bbs.chinaunix. ...
- 解决ubuntu server mysql load data infile 导入本地文件ERROR 1148 (42000)错误。
问题:在ubuntu server 上使用apt-get 安装完 mysql 使用 load data infile 出现错误,错误代码如下: ERROR (): The used command i ...
- 【转载】Mysql load data infile用法(万级数据导入,在几秒之内)
https://blog.csdn.net/u014082714/article/details/53173975 http://blog.itpub.net/26506993/viewspace-2 ...
- mysql load data导入脚本
# !/bin/bash ############中文说明###################### #本程序的一些提示需要中文支持,如系统没有安装中文包,请先安装:yum -y groupinst ...
- MySql LOAD DATA 使用
load的语法 LOAD DATA [LOW_PRIORITY | CONCURRENT] [LOCAL] INFILE 'file_name.txt' [REPLACE | IGNORE] INTO ...
- 浅谈MySQL load data local infile细节 -- 从源码层面
相信大伙对mysql的load data local infile并不陌生,今天来巩固一下这里面隐藏的一些细节,对于想自己动手开发一个mysql客户端有哪些点需要注意的呢? 首先,了解一下流程: 3个 ...
随机推荐
- centos6 安装 docker
一.升级内核(带aufs模块) 1.yum安装带aufs模块的3.10内核(或到这里下载kernel手动安装:http://down.51cto.com/data/1903250) cd /etc/y ...
- ubuntu 源码安装 lnmp 环境
准备篇 下载软件包 1.下载nginx http://nginx.org/download/nginx-1.2.0.tar.gz 2.下载pcre (支持nginx伪静态) ftp://ftp.cs ...
- Runnable和Thread实现多线程的区别(含代码)
转载请注明出处:http://blog.csdn.net/ns_code/article/details/17161237 Java中实现多线程有两种方法:继承Thread类.实现Runnable接口 ...
- Linux环境(Centos) 安装mysql
MariaDB是mysql的开源分支,自从mysql被oracle收购商业化之后,mysql之父在mysql5.5开源的版本的基础上重新开了一个分支,centos也把MariaDB作为mysql的默认 ...
- LoadRunner11学习记录五 -- 错误提示分析
LoadRunner测试结果具体分析: 一.错误提示分析 分析实例: 1.Error: Failed to connect to server “172.17.7.230″: [10060] Con ...
- TortoiseSVN教程
TortoiseSVN使用教程 TortoiseSVN是一个SVN的客户端 1.Checkout Repository 首先要Checkout服务器端的Repository,所谓的Checkout就是 ...
- 在Linux下配置.net网站
一.Linux安装 1.1 Linux环境 本篇文章选择VMWare虚拟机安装Linux,使用的Linux是CentOS-7.可以在百度上自行下载一个VMWare和CentOS-7镜像,建议使用最新版 ...
- Spring.net 后处理器 可用来切换实例
.xml配置 <!--我们在Object.xml文件上将HexuObjectPostProcessor注册到上下文对象中去--> <object id="hexu" ...
- (3)WePHP控制器与模型
MVC的先进理念就是程序流程 数据库操作 模板制作三个流程分离 大M函数会把模型引入到当前控制器的方法中,注意这个"excel"对应M文件夹的excel.php 同时也是整个exc ...
- Integer中getInteger(),valueof()
Integer类有两个看起来很类似的静态方法,一个是Integer.getInteger(String),另外一个是Integer.valueOf(String).如果只看方法名称的话,很容易将这两个 ...