• 创建目录并且将数据写入txt文件、删除指定目录下的文件


    要求:将用户uid批量导出,并且每5000个放到一个txt文件中,使用英文逗号分隔用户uid;
    思路:自定义一个文件夹,在每次导出的时候,先将这个文件夹中的文件删除,之后再重新导出新的文件,使用日期区分是否导出成功;一次性查出满足的所有数据,每5000条存入一个文件,可以使用array_chunk()函数分隔原始数组,之后再使用array_column()
      函数取出数组中的uid这一列的数据,最后使用import()函数将uid组合成用英文逗号分隔的字符串,存入txt文件中。
    sql查询使用ThinkPHP框架方式。
    //批量导出数据并且写入txt文件中

    public function export_uids(){
    $filepath = $_SERVER['DOCUMENT_ROOT'].'/Uploads/downuids';
    //创建目录
    $dir = iconv("UTF-8", "GBK", $filepath);
    if (!file_exists($dir)){
    mkdir ($dir,0777,true);
    } else {
    //文件已存在,修改权限
    chmod($dir, 0777);
    }
    //删除文件夹下所有的文件
    $this->deldir($filepath);
    $presell = D('presell');
    $map['p.organizationpath'] = array('EXP',"REGEXP '-3-'");
    $map['p.classesid'] = array('EXP',"NOT REGEXP '5'");
    $map['p.uid'] =array('NEQ',0);
    $map['u.phone'] =array('NEQ','');
    $map['ut.device_token'] =array('NEQ','');
    $result = $presell->alias('p')->field("p.uid")->join("LEFT JOIN `user` as u ON p.uid=u.id")
    ->join("LEFT JOIN `user_tuisong` as ut on ut.uid = u.id")
    ->where($map)
    ->order("p.uid asc")
    ->select();
    $res_arr = array_chunk($result,5000);//将数组每5000条数据分一组
    $uids_arr = array();
    foreach($res_arr as $key => $val){
    $uids_arr[$key] = trim(implode(',',array_column($val,'uid')));
    }
    if(!empty($uids_arr) && count($uids_arr) != 0){
    //写入到文件
    foreach($uids_arr as $key => $val){
    $filename = intval($key + 1).'-'.date('Ymd',time()).'.txt';
    $fp2 = @fopen($filepath.'/'.$filename, "a");
    fwrite($fp2, trim($val));
    fclose($fp2);
    }
    echo 'success';exit;
    }else{
    echo '没有查询到用户数据';exit;
    }
    }

    //删除文件夹内元素
    function deldir($dir)
    {
    //删除目录下的文件:
    $dh=opendir($dir);
    while ($file=readdir($dh))
    {
    if($file!="." && $file!="..")
    {
    $fullpath=$dir."/".$file;
    if(!is_dir($fullpath))
    {
    unlink($fullpath);
    }
    else
    {
    $this->deldir($fullpath);
    }
    }
    }
    closedir($dh);
    }

  • 相关阅读:
    oracle本地编译问题
    ORA-214 signalled during: ALTER DATABASE MOUNT 问题
    mysql常用的一些修改命令
    了解PHP中的Array数组和foreach
    在Sublime Text 3上安装代码格式化插件CodeFormatter
    自动在图片上添加页码
    Ubuntu 16.10 安装byzanz截取动态效果图工具
    PHP赋值运算
    Ubuntu 16.10 安装KolourPaint 4画图工具
    PHP数据类型之间的强制转换
  • 原文地址:https://www.cnblogs.com/lfjblog/p/10613898.html
Copyright © 2020-2023  润新知