zoukankan      html  css  js  c++  java
  • 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(0)->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(0)->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(4)->findOne($sql);
            if(empty($info)){
                return "no data";
            }
            $file = $info['file'];
            $body =  $info['content'];
            $subject = $info['title'];
            $emailType = "queue_{$info['id']}";
            $pre_count = 1000;
            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)+1;
            $successNum = 0;
            for ($i = 0;$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[0]) ? trim($value[0]) : '' ;
                    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(4)->Exec($sql);
            if($num > 0 ){
                $now  =date("Y-m-d H:i:s") ;
                $this->db(4)->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 ;
        }
        
    }
  • 相关阅读:
    搭建Nginx反向代理做内网域名转发
    网站监测脚本
    Nginx启动脚本
    L2TP用户添加和删除、搜索脚本
    CentOS Linux 安装IPSec+L2TP
    Nginx认证
    Nginx配置HTTPS
    Nginx 如何处理一个请求
    HTTP协议原理
    DNS解析流程
  • 原文地址:https://www.cnblogs.com/xs-yqz/p/7272548.html
Copyright © 2011-2022 走看看