zoukankan      html  css  js  c++  java
  • 600多万用户密码使用次数统计分析程序

    我已经将600多万用户入库,所以从数据库获取原始数据。
    如果没有导入,也可以从文本直接分析出数据。
    每1万条数据保存一份序列化文件,然后再将这些文件合并成最终的文件。
    再将这些数据保存成sql语句。
    最后采用mysql命令,将这些数据导入到数据库中。

     1 <?php 
     2 header("content-type:text/html; charset=utf-8");
     3 $path = dirname(realpath(__FILE__));
     4 $conn = mysql_connect('localhost', 'root', 'password') or die("Could not connect: " . mysql_error());
     5 mysql_select_db("database");
     6 mysql_query("set names utf8");
     7 
     8 set_time_limit(0);
     9 $limit = 10000;
    10 for($i=0; $i<643; $i++){
    11     $file = $path . '/data/' . $i . '.ini';
    12     if(is_file($file)){
    13         continue;
    14     }
    15 
    16     $start = $limit * $i;
    17     $sql = "SELECT * FROM table limit {$start}, {$limit}";
    18     $rs  = mysql_query($sql);
    19     $password = array();
    20     while($row = mysql_fetch_array($rs, MYSQL_ASSOC)){
    21         $pass = $row["password"];
    22         if(!isset($password[$pass])){
    23             $password[$pass] = 0;
    24         }
    25         $password[$pass]++;
    26     }
    27     echo $i, chr(10);
    28     file_put_contents($file, serialize($password));
    29 }
    30 
    31 ini_set('memory_limit', '1024M');
    32 $passes = array();
    33 for($i=0; $i<643; $i++){
    34     $file = $path . '/data/' . $i . '.ini';
    35     if(!is_file($file)){
    36         continue;
    37     }
    38     $pass = unserialize(file_get_contents($file));
    39     foreach($pass as $pwd => $num){
    40         if(!isset($passes[$pwd])){
    41             $passes[$pwd] = $num;
    42         }
    43         else{
    44             $passes[$pwd] += $num;
    45         }
    46     }
    47     echo $i;
    48     echo chr(10);
    49 }
    50 
    51 $fw = fopen($path . "/pass.sql", "w");
    52 $i  = 0;
    53 foreach($passes as $pwd => $num){
    54     $str = '';
    55     $pwd = str_replace('\'', '\'\'', $pwd);
    56     $pwd = str_replace('\\', '\\\\', $pwd);
    57     if($i % 2000 == 0){
    58         if($i !== 0)$str = ';'.chr(10);
    59         $str .= 'INSERT INTO `pwd`(`p`,`n`) VALUES(\''.$pwd.'\',\''.$num.'\')';
    60     }
    61     else{
    62         $str .= ',(\''.$pwd.'\',\''.$num.'\')';
    63     }
    64     fwrite($fw, $str);
    65     if($i % 10000 == 0) echo $i.chr(10);
    66     $i++;
    67 }
    68 fclose($fw);
    69 echo "create insert sql success\n"; 
    70 ?>



  • 相关阅读:
    This iPhone 6s is running iOS 11.3.1 (15E302), which may not be supported by this version of Xcode.
    vmware 里MAC 鼠标能移动 无法单击
    php获取微信的openid
    PHP 调试打印输出变量
    E0264 Unable to execute '"/usr/bin/codesign" ...'
    PHP 返回JSON
    小米手机安装证书
    CSS3:radial-gradient,径向渐变的使用方法
    CSS3:linear-gradient,线性渐变的使用方法
    CSS3:RGBA的使用方法
  • 原文地址:https://www.cnblogs.com/uniqid/p/5693243.html
Copyright © 2011-2022 走看看