一区二区久久-一区二区三区www-一区二区三区久久-一区二区三区久久精品-麻豆国产一区二区在线观看-麻豆国产视频

匹配csdn用戶數據庫與官方用戶的重合度并將重疊部分的用戶篩選出來

過程:
1、獲取csdn的用戶數據庫導入本地
試用editplus打開提示內存不足,沒找到辦法,同事的linux下查看了一下,基本的格式如下:
用戶名 # 密碼 # 郵箱
用戶名 # 密碼 # 郵箱
相應數據結構:
復制代碼 代碼如下:
CREATE TABLE IF NOT EXISTS `csdn_userdb` (
  `id` int(10) NOT NULL auto_increment,
  `username` varchar(50) character set gbk NOT NULL,
   `password` varchar(50) character set gbk NOT NULL,
  `email` varchar(50) character set gbk NOT NULL,
   PRIMARY KEY (`id`),
  KEY `username` (`username`),
  KEY `email` (`email`)
  ) ENGINE=MyISAM DEFAULT CHARSET=gbk AUTO_INCREMENT=1 ;

一直懷疑fopen打開文件是寫入緩存的,但是實踐證明速度很快,應該是沒有寫入緩存,以下為導入數據的代碼
復制代碼 代碼如下:
<?php
$link = mysql_connect('localhost', 'root', 'admin', true);
mysql_select_db('csdn',$link);
$handle = fopen("C:/Users/zhudong/Desktop/www.csdn.NET.sql", "r");
while (!feof($handle)){
$i++;
$buffer = fgets($handle);
list($u,$p,$e) = explode(" # ",$buffer);
mysql_query("INSERT INTO csdn_userdb(username,password,email) VALUES ('$u','$p','$e')",$link);
if ($i%1000 == 0) echo $i."/n";
}
fclose($handle);
?>

以上代碼效率非常差,故做修改后代碼如下:
復制代碼 代碼如下:
<?php
$link = mysql_connect('localhost', 'root', 'admin', true);
mysql_select_db('csdn',$link);
$handle = fopen("C:/Users/zhudong/Desktop/www.csdn.NET.sql", "r");
$perpage = 50;
while (!feof($handle)){
$i++;
$buffer = fgets($handle);
list($u,$p,$e) = explode(" # ",$buffer);
$insertValue[] = "('$u','$p','$e')";
if ($i% $perpage == 0){ $perpage == 0){
$instrtValueString = implode(',',$insertValue);
mysql_query("INSERT INTO csdn_userdb(username,password,email) VALUES $instrtValueString",$link);
echo $i."/n";
$insertValue = array();
}
}
fclose($handle);

為了搞清楚有那些因素對導入數據的效率產生影響,故根據不同的設置進行了測試
CSDN用戶總數據 6428600
當$perpage=500;導入后數據:5,902,000;數據丟失526600 丟失率:8%;數據表引擎:MyISAM;索引:有;總耗時 :15分鐘
當$perpage=200,導入后數據總數:6,210,200;數據丟失:218400;丟失率:3.3%;數據表引擎: MYISAM ;索引:有;總耗時:30分鐘
當$perpage=200,導入后數據總數:6,210,200;數據丟失:218400;丟失率:3.3%;數據表引擎:INNODB;索引:有;總耗時:65分鐘
當$perpage=200,導入后數據總數:6,210,200;數據丟失:218400;丟失率:3.3%;數據表引擎:MYISAM;索引:無;總耗時:14分鐘(數據導入完畢后單獨再建索引)
當$perpage=50,導入后數據總數:6,371,200;數據丟失:57400,丟失率:0.8%;數據表引擎:MYISAM;索引:無:總耗時:20分鐘
根據以上情況總結如下:
1、先導入數據后加索引的效率要比先加索引后導入數據的高一倍
2、InnoDB 在單進程數據插入上的效率要比MYISAM低很多
3、當perpage=50的情況下數據丟失率在1%以下
復制代碼 代碼如下:
因為通過瀏覽器執行會有超時的問題,而且效率地下,故通過命令行方式運行,此過程中遇到一點小麻煩耽擱了不少時間
起初我執行如下代碼:
php.exe E:/usr/www/importcsdndb.php
但是一直報錯:call to undefined function mysql_connect
折騰發現沒有載入php.ini
正確代碼為:
php.exe -c E:/usr/local/apache2/php.ini importcsdndb.php

2、導入需要匹配的用戶數據數據至本地
命令行進入msyql(不會的自己百度)
然后執行:mysql>source C:/Users/zhudong/Desktop/userdb.sql
3、對比篩選用戶
對比程序寫好了,切記在命令行下運行:
復制代碼 代碼如下:
<?php
$link = mysql_connect('localhost', 'root', 'admin', true);
mysql_select_db('csdn',$link);
$handle_username = fopen("E:/records_username.txt","a");
//$handle_email = fopen("E:/records_email.txt","a");
$username_num = $email_num = $uid = 0;
while ($uid<2181106) {
$nextuid=$uid+10000;
$query = mysql_query("SELECT * FROM pw_members WHERE uid>'$uid' AND uid<'$nextuid'");
while ($rt = mysql_fetch_array($query,MYSQL_ASSOC)) {
$username = $rt['username'];
$email = $rt['email'];
$query2 = mysql_query("SELECT * FROM scdn_userdb WHERE username='$username' OR email='$email'");
while ($rt2 = mysql_fetch_array($query2,MYSQL_ASSOC)) {
if ($rt['password'] = md5($rt2['password'])) {
if ($rt2['username'] == $username) {
$username_num++;
fwrite($handle_username,'OWN:'.$rt['uid'].'|'.$rt['username'].'|'.$rt['password'].'|'.$rt['email'].' CSDN:'.$rt2['username'].'|'.$rt2['password'].'|'.$rt2['email']."/r/n");
echo 'username_num='.$username_num."/r/n";
continue;
}
/*
if ($rt2['email'] == $email) {
$email_num++;
fwrite($handle_email,'OWN:'.$rt['uid'].'|'.$rt['username'].'|'.$rt['password'].'|'.$rt['email'].' CSDN:'.$rt2['username'].'|'.$rt2['password'].'|'.$rt2['email']."/r/n");
echo 'email_num='.$email_num."/r/n";
}
*/
}
}
mysql_free_result($query2);
}
$uid = $nextuid;
}
?>

您看到的以上的代碼是非常蹩腳的,因為其效率特別低 ,幾百萬的數據,要跑10多個小時,怎么能忘記連表查詢這么基本的東西呢,以下為修正后的方法
復制代碼 代碼如下:
$link = mysql_connect('localhost', 'root', 'admin', true);
mysql_select_db('csdn',$link);
$handle_username = fopen("E:/records_username.txt","a");
while($uid<2181106) {//此處的數字為要對比用戶庫的最大ID
$nextuid= $uid+10000;
$query = mysql_query("SELECT m.uid,m.username,m.password,m.email,u.password as csdn_password,u.email as csdn_email FROM own_members m LEFT JOIN csdn_userdb u USING(username) WHERE m.uid>'$uid' AND m.uid<='$nextuid' AND u.username!=''");
while ($rt = mysql_fetch_array($query,MYSQL_ASSOC)) {
if ($rt['password'] == md5($rt['csdn_password'])) {
$username_num++;
fwrite($handle_username,'OWN:'.$rt['uid'].'|'.$rt['username'].'|'.$rt['password'].'|'.$rt['email'].' CSDN:'.$rt['username'].'|'.$rt['csdn_password'].'|'.$rt['csdn_email']."/r/n");
echo 'username_num='.$username_num."/r/n";
}
}
$uid = $nextuid;
echo 'uid='.$uid;
}
?>

總對比時間25分鐘,相比較之前10多個小時的執行真是大有提升
總重名用戶:34175
占總會員比例:1.7%
1.7%的重名用戶還是挺嚴重的,希望本文對各位站長對比出本站的用戶有所幫助

php技術匹配csdn用戶數據庫與官方用戶的重合度并將重疊部分的用戶篩選出來,轉載需保留來源!

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

主站蜘蛛池模板: 日韩在线一区高清在线 | 日本a级精品一区二区三区 日本a在线看 | 国产人成激情视频在线观看 | 亚洲免费中文 | 6080午夜乱理伦片 | 黑人和黑人激情一级毛片 | 黄网在线观看视频 | 人成精品视频三区二区一区 | 天天色天 | 色视频在线免费 | 亚洲图片一区二区三区 | 国产男女爱视频在线观看 | 国产热视频| 中文字幕佐山爱一区二区免费 | 亚洲国产成人久久午夜 | 国产成人精品久久综合 | 国产全黄三级国产全黄三级书 | 亚洲一区二区综合 | 在线观看99 | 欧美一级成人免费大片 | 精品国产福利久久久 | 一本大道久久a久久综合 | 丝袜精品 欧美 亚洲 自拍 | 久久免费公开视频 | 精品在线观看国产 | 四虎影永久在线观看精品 | 亚洲成a人片77777kkkk | 国产成品精品午夜视频 | 大色虫成人午夜在线观看 | 怡红院成人影院 | 欧美大尺度无遮挡性视频 | 337p人体大胆扒开下部 | 日本一区二区三区久久久久 | 成人爽a毛片在线视频网站 成人丝袜激情一区二区 | 亚洲一区二区影视 | 午夜欧美性欧美 | 免费国产一区二区三区 | 国产成人亚洲精品91专区手机 | 欧美日韩不卡码一区二区三区 | 2021国产在线视频 | 黄视频在线免费看 |