生成随机20万测试数据
2023-04-06 01:253124
<?php namespace api\random\controller; use cmf\controller\RestBaseController; use think\Facade\Db; use think\helper\Str; class RandomController extends RestBaseController { public function index() { // 生成20万个随机数据 for($i = 0; $i < 200000; $i++){ $wxUserData = [ 'nickName' => $this->generateNicknameSimple(), 'gender' => mt_rand(0, 2), 'language' => "zh_CN", 'city' => '', 'province' => '', 'country' => '', 'avatarUrl' => 'https://thirdwx.qlogo.cn/mmopen/vi_32/POgEwh4mIHO4nibH0KlMECNjjGxQUq24ZEaGT4poC6icRiccVGKSyXwibcPq4BWmiaIGuG1icwxaQX6grC9VemZoJ8rg/132', 'sessionKey' => $this->getRandChar(28), ]; //TODO 使用事务做用户注册 $user = [ 'create_time' => $this->generateTimestamp(), 'user_status' => 1, 'user_type' => 2, 'sex' => $wxUserData['gender'], 'user_nickname' => $wxUserData['nickName'], 'avatar' => $wxUserData['avatarUrl'], 'last_login_ip' => $this->generateIpAddress(), 'last_login_time' => time(), ]; $userId = Db::name("user")->insertGetId($user); $token = cmf_generate_user_token($userId, 'wxapp'); Db::name("third_party_user")->insert([ 'openid' => $this->getRandChar(28), 'user_id' => $userId, 'third_party' => 'wxapp', 'app_id' => 'wxb630438f5338e30b', 'last_login_ip' => $this->generateIpAddress(), 'union_id' => '', 'last_login_time' => time(), 'create_time' => $this->generateTimestamp(), 'login_times' => mt_rand(0, 100), 'status' => 1, 'more' => json_encode($wxUserData) ]); $name = $this->generateNameSimple(); $id_card = $this->generateIdNumber(); $mobile = $this->generatePhoneNumber(); $order_id = Db::name("order")->insertGetId([ 'activity_id' => 1, 'goods_id' => mt_rand(1, 2), 'meetingplace_id' => mt_rand(1, 5), 'user_id' => $userId, 'order_sn' => cmf_get_order_sn(), 'name' => $name, 'id_card' => $id_card, 'mobile' => $mobile, 'company' =>'未知', 'logo' =>'', 'amount' =>9.9, 'thumbnail' =>'', 'order_type' =>1, 'order_status' =>0, 'pay_status' =>1, 'payment_id' =>1, 'payment_name' =>'微信支付', 'pay_time' =>time(), 'create_time' =>time(), 'update_time' =>time(), ]); Db::name("info")->insert([ 'user_id' => $userId, 'order_id' => $order_id, 'name' => $name, 'id_card' => $id_card, 'mobile' => $mobile, 'thumbnail' => '', 'status' => 1, 'create_time' => $user['last_login_time'], 'update_time' => $user['last_login_time'] ]); } // 写入数据库 // Db::name('random_data')->insertAll($data); return '生成成功'; } private function generateNickname() { // 生成一个3-10个汉字的昵称 $length = mt_rand(3, 10); $name = ''; for ($i = 0; $i < $length; $i++) { $name .= mb_chr(mt_rand(0x4E00, 0x9FA5)); } return $name; } function generateNicknameSimple() { // 生成汉字昵称,常见字 // 定义中文常用姓氏和名字 $surnames = ['王', '李', '张', '刘', '陈', '杨', '黄', '赵', '周', '吴', '徐', '孙', '胡', '朱', '高', '林', '何', '郭', '马', '罗']; $names = ['伟', '芳', '娜', '秀英', '敏', '静', '丽', '强', '磊', '军', '洋', '勇', '艳', '杰', '娟', '涛', '明', '超', '秀兰', '霞']; // 定义常用名词、形容词和动词 $nouns = ['梦', '心', '情', '雨', '阳光', '海洋', '风', '星空', '音乐', '微笑', '快乐', '幸福', '爱', '友情', '诗', '悲伤', '思念', '回忆', '希望', '勇气']; $adjectives = ['美丽的', '善良的', '温柔的', '可爱的', '聪明的', '开心的', '快乐的', '幸福的', '自由的', '热情的', '真诚的', '纯洁的', '勇敢的', '坚强的', '温暖的', '明亮的', '激情的', '感性的', '理性的', '唯美的', '精彩的']; $verbs = ['爱', '思念', '怀念', '忘记', '珍惜', '守护', '相信', '祝福', '微笑', '欣赏', '感受', '陪伴', '成长', '努力', '追求', '梦想', '坚持', '超越', '创造', '分享']; // 随机生成姓名 $nickname = $surnames[mt_rand(0, count($surnames) - 1)] . $names[mt_rand(0, count($names) - 1)]; // 随机生成形容词和名词 $adjective = $adjectives[mt_rand(0, count($adjectives) - 1)]; $noun = $nouns[mt_rand(0, count($nouns) - 1)]; // 随机生成动词 $verb = $verbs[mt_rand(0, count($verbs) - 1)]; // 随机决定名词和形容词的顺序 $order = mt_rand(0, 1); if ($order == 0) { $nickname .= $adjective . $noun; } else { $nickname .= $noun . $adjective; } // 随机加上动词 if (mt_rand(0, 1) == 1) { $nickname .= $verb; } // 返回昵称 return $nickname; } private function generateTimestamp() { // 生成一个随机的时间戳 $timestamp = mt_rand(1680000000, time()); return $timestamp; } private function generateIpAddress() { // 生成一个随机的IPv4地址 $ip = []; for($i = 0; $i < 4; $i++) { $ip[] = mt_rand(0, 255); } return implode('.', $ip); } private function generateName() { // 生成一个随机的中文姓名 $surname = [ '赵', '钱', '孙', '李', '周', '吴', '郑', '王', '冯', '陈', '楮', '卫', '蒋', '沈', '韩', '杨', '朱', '秦', '尤', '许', '何', '吕', '施', '张', '孔', '曹', '严', '华', '金', '魏', '陶', '姜', '戚', '谢', '邹', '喻', '柏', '水', '窦', '章', '云', '苏', '潘', '葛', '奚', '范', '彭', '郎', '鲁', '韦', '昌', '马', '苗', '钟', '骆', '戴', '贾', '田', '堵', '储', '卢', '杜', '胡', '南宫', '欧阳', '夏侯', '诸葛', '皇甫', '司马', '公孙', '慕容', '长孙', '司徒', '轩辕', '令狐', '宇文', '司空', '鲜于', '闾丘', '东方', '子车', '呼延', '赫连', '司寇', '浦', '尚', '农', '温', '别', '庄', '晏', '柴', '瞿', '阎', '充', '慕', '连', '茹', '习', '宦', '艾', '鱼', '容', '向', '古', '易', '慎', '戈', '廖', '庾', '终', '暨', '居', '衡', '步', '都', '耿', '满', '弘', '匡', '文', '国', '寇', '广', '禄', '阙', '东', '欧', '殳', '沃', '利', '蔚', '越', '夔', '隆', '师', '巩', '厍', '聂', '晁', '勾', '敖', '融', '冷', '訾', '辛', '阚', '那', '简', '饶', '空', '曾', '毋', '沙', '乜', '养', '鞠', '须', '丰', '巢', '关', '蒯', '相', '查', '后', '荆', '红', '游', '竺', '权', '逯', '盖', '益', '桓', '公', '万', '俟', '司空']; $name = $surname[mt_rand(0, count($surname) - 1)]; $length = mt_rand(1, 2); for($i = 0; $i < $length; $i++) { $name .= mb_chr(mt_rand(0x4E00, 0x9FA5)); } return $name; } // 生成姓名,常见字 function generateNameSimple() { $surnames = [ '赵', '钱', '孙', '李', '周', '吴', '郑', '王', '冯', '陈', '楮', '卫', '蒋', '沈', '韩', '杨', '朱', '秦', '尤', '许', '何', '吕', '施', '张', '孔', '曹', '严', '华', '金', '魏', '陶', '姜', '戚', '谢', '邹', '喻', '柏', '水', '窦', '章', '云', '苏', '潘', '葛', '奚', '范', '彭', '郎', '鲁', '韦', '昌', '马', '苗', '钟', '骆', '戴', '贾', '田', '堵', '储', '卢', '杜', '胡', '南宫', '欧阳', '夏侯', '诸葛', '皇甫', '司马', '公孙', '慕容', '长孙', '司徒', '轩辕', '令狐', '宇文', '司空', '鲜于', '闾丘', '东方', '子车', '呼延', '赫连', '司寇', '浦', '尚', '农', '温', '别', '庄', '晏', '柴', '瞿', '阎', '充', '慕', '连', '茹', '习', '宦', '艾', '鱼', '容', '向', '古', '易', '慎', '戈', '廖', '庾', '终', '暨', '居', '衡', '步', '都', '耿', '满', '弘', '匡', '文', '国', '寇', '广', '禄', '阙', '东', '欧', '殳', '沃', '利', '蔚', '越', '夔', '隆', '师', '巩', '厍', '聂', '晁', '勾', '敖', '融', '冷', '訾', '辛', '阚', '那', '简', '饶', '空', '曾', '毋', '沙', '乜', '养', '鞠', '须', '丰', '巢', '关', '蒯', '相', '查', '后', '荆', '红', '游', '竺', '权', '逯', '盖', '益', '桓', '公', '万', '俟', '司空']; $names = ['王', '李', '张', '刘', '陈', '杨', '黄', '赵', '周', '吴', '徐', '孙', '胡', '朱', '高', '林', '何', '郭', '马', '罗','伟', '芳', '娜', '秀英', '敏', '静', '丽', '强', '磊', '军', '洋', '勇', '艳', '杰', '娟', '涛', '明', '超', '秀兰', '霞', '华', '国庆', '建华', '建国', '亮', '建军', '建平', '建农', '建新', '建业', '建英', '建政', '瑞', '建民', '建勇', '建珍', '婷', '建峰', '建芳', '建红', '建华', '建宏', '建辉', '建华', '建杰', '建军', '建民', '建宁', '建平', '建强', '建文', '建新', '建业', '建英', '建章', '建中', '建忠', '建宇', '建政', '建州']; // 随机生成姓名 $name = $surnames[mt_rand(0, count($surnames) - 1)] . $names[mt_rand(0, count($names) - 1)]; // 返回姓名 return $name; } private function generateIdNumber() { // 生成一个随机的身份证号码 $region = ['1101', '1201', '1301', '1401', '1501']; $year = mt_rand(1970, 2000); $month = str_pad(mt_rand(1, 12), 2, '0', STR_PAD_LEFT); $day = str_pad(mt_rand(1, 28), 2, '0', STR_PAD_LEFT); $suffix = str_pad(mt_rand(1, 9999), 4, '0', STR_PAD_LEFT); $id_number = $region[mt_rand(0, count($region) - 1)] . $year . $month . $day . $suffix; return $id_number; } private function generatePhoneNumber() { // 生成一个随机的手机号码 $prefix = ['130', '131', '132', '133', '134', '135', '136', '137', '138', '139', '150', '151', '152', '153', '154', '155', '156', '157', '158', '159', '170', '176', '177', '178', '180', '181', '182', '183', '184', '185', '186', '187', '188', '189']; $number = $prefix[mt_rand(0, count($prefix) - 1)] . str_pad(mt_rand(0, 99999999), 8, '0', STR_PAD_LEFT); return $number; } private function getRandChar($length){ // 随机生成要求位数个字符 $str = null; $strPol = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz";//大小写字母以及数字 $max = strlen($strPol)-1; for($i=0;$i<$length;$i++){ $str.=$strPol[rand(0,$max)]; } return $str; } }
上一篇: 用ThinkPHP6,写一个生成一个3-10个汉字的昵称,不要生僻字,需要是常用字,并且有含义,是一个连贯的句子或者词组