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个 ...
随机推荐
- git 忽略文件.gitignore
# 此为注释– 将被Git 忽略 *.a # 忽略所有.a 结尾的文件 !lib.a # 但lib.a 除外 /TODO # 仅仅忽略项目根目录下的TODO 文件,不包括subdir/TODO bui ...
- 混合开发Js bridge新秀-DSBridge iOS篇
这个DSBridge 和我之前开发做的混合开发 用的方式 很相似,所以觉得很是不错,推荐给你大家. DSBridge-IOS:https://github.com/wendux/DSBridge-IO ...
- 安装操作系统CentOS-7.x
一.创建虚拟机 使用VMware Fusion创建虚拟机 二.系统安装 为了统一环境,保证实验的通用性,将网卡名称设置为eth*,不使用CentOS 7默认的网卡命名规则.所以需要在安装的时候,增加内 ...
- js中直接对字符串转义-用于solr ulr 关键词转义
js代码 /* * 获取UTC格式的字符串,参数必须是 */var solrDateFormat = function (o){ var date; if(typeof o == 'str ...
- scala的隐式转换
摘要: 通过隐式转换,程序员可以在编写Scala程序时故意漏掉一些信息,让编译器去尝试在编译期间自动推导出这些信息来,这种特性可以极大的减少代码量,忽略那些冗长,过于细节的代码. 使用方式: 1. ...
- [Excel]鼠标右键菜单没有新建Word、Excel、PPT怎么办?
很多朋友在安装好Office(2010或2013等)之后,发现右键新建中没有Word.Excel.PowerPoint等项,但是自己的Office却明明安装好了.这个时候该怎么办呢?这里,本文为大家提 ...
- XML(子节点序列化反序列对象)读写
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threa ...
- SSL技术白皮书
首页产品技术操作系统ComwareV5安全和VPN SSL技术白皮书 下载 收藏 打印 推荐 摘自:http://www.h3c.com/cn/d_200812/622834_30003_0.htm# ...
- spring加载ApplicationContext.xml的四种方式
spring 中加载xml配置文件的方式,好像有4种, xml是最常见的spring 应用系统配置源.Spring中的几种容器都支持使用xml装配bean,包括: XmlBeanFactory , C ...
- Oracle——视图
视图是一种虚表. 视图建立在已有表的基础上, 视图依赖的这些表称为基表. 视图向用户提供基表数据的另一种表现形式 对视图数据的修改会影响到基表中的数据 视图的优点 控制数据访问 简化查询 避免重复访问 ...