首页 > 其他 > 详细

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

时间:2019-03-28 12:37:02      阅读:124      评论:0      收藏:0      [点我收藏+]
要求:将用户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);
}

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

原文:https://www.cnblogs.com/lfjblog/p/10613898.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!