csdn ユーザー データベースと公式ユーザーの重複を照合し、重複するユーザーを除外する_PHP チュートリアル
プロセス:
1. csdn のユーザー データベースを取得し、ローカルにインポートします。
editplus を開こうとすると、Linux で確認する方法が見つかりませんでした。は次のとおりです:
Username# Password# Email
Username# Password# Mailbox
対応するデータ構造:
CREATE TABLE IF NOT EXISTS `csdn_userdb` (
`id ` int(10) NOT NULL auto_increment,
`username` varchar(50) 文字セット gbk NOT NULL,
`password` varchar(50) 文字セット gbk NOT NULL,
`email` varchar(50) 文字セット gbk NOT NULL ,
PRIMARY KEY (`id`),
KEY `username` (`username `),
KEY `email` (`email`)
) ENGINE=MyISAM DEFAULT CHARSET=gbk AUTO_INCREMENT=1;
私はいつもfopen はファイルをキャッシュに開くのではないかと思われますが、実際には非常に高速であることが証明されているため、書き込みキャッシュは存在しないはずです。以下はデータをインポートするコードです
$link = mysql_connect('localhost', 'root', 'admin', true);
mysql_select_db('csdn',$link);
$handle = fopen("C:UserszhudongDesktopwww. csdn.net.sql", "r");
while (!feof($handle)){
$i++;
$buffer = fgets($handle);
list($u,$p,$e) = explode(" # ",$buffer);
mysql_query("csdn_userdb(ユーザー名,パスワード,電子メール) 値に挿入 ('$u ','$p','$e')",$link); $i%1000 == 0) echo $i."n";
}
fclose($handle);>
上記のコードは次のようになります:
コードは次のとおりです:
$i++; ($handle);
list($u,$p,$e) =explode(" # ",$buffer);
$insertValue[] = " ('$u','$p','$e' )";
if ($i% $perpage == 0){ $perpage == 0){
$insrtValueString = implode(',',$insertValue );
mysql_query("INSERT INTO csdn_userdb(ユーザー名,パスワード,電子メール) ) VALUES $insrtValueString",$link);
echo $i."n";
$insertValue = array();
}
}
fclose($ handle);
どのような要因が影響を与えるかを調べるには、インポートされたデータの効率性を高めるために、さまざまな設定に基づいてテストを実施しました。
CSDN ユーザー データの総数 6428600
$perpage=500 の場合、データ損失 5,902,000、損失率 : 8%、データ テーブル エンジン : MyISAM、インデックス : はい。合計所要時間: 15 分
$perpage=200 の場合、インポート後の合計データ: 218400; データ テーブル エンジン: MYISAM; 合計消費時間: 30 分perpage=200、インポート後のデータの合計数: 6,210,200、データ損失: 3.3%、データ テーブル エンジン: INNODB、合計消費時間: 65 分、$perpage=200 の場合、インポート後のデータ数: 6,210,200; データ損失: 218400; データ テーブル エンジン: MYISAM; 合計時間: 14 分 (データのインポートが完了した後、個別にインデックスを再構築します) 50、インポート後の総データ数: 6,371,200、データ損失: 57400、損失率: 0.8%、データ テーブル エンジン: MYISAM、合計所要時間: 20 分
上記の状況に基づく要約は次のとおりです。 1. 最初にデータをインポートしてからインデックスを追加する効率は、最初にインデックスを追加してからデータをインポートする場合の 2 倍になります。
2. 単一プロセスのデータ挿入における InnoDB の効率は、MYISAM の効率よりも大幅に低くなります。 =50 この場合、データ損失率は 1% 未満です
コードをコピーします
コードは次のとおりです:
ブラウザ経由で実行するとタイムアウトの問題が発生し、効率が低いためです。このプロセス中に、少しのトラブルが発生し、かなりの時間がかかりました
最初に次のコードを実行しました:
php.exe E:usrwwwimportcsdndb.php
しかし、エラーが報告され続けました。未定義の関数 mysql_connect を呼び出します
苦労した結果、php.ini がロードされていないことがわかりました
3. ユーザーを比較およびフィルターします
比較プログラムが作成されています。忘れずにコマンドラインで実行してください:
コードをコピーします
コードは次のとおりです:
$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[ '電子メール'].' CSDN:'.$rt2['ユーザー名'].'|'.$rt2['パスワード'].'|'.$rt2['電子メール']."rn");
echo 'username_num='.$username_num."rn";
続けてください。
}
/*
if ($rt2['email'] == $email) {
$email_num++;
fwrite($handle_email,'OWN:'.$rt['uid'].'|'.$rt['username'].'|'.$rt['password'].'|'.$rt[ '電子メール'].' CSDN:'.$rt2['ユーザー名'].'|'.$rt2['パスワード'].'|'.$rt2['電子メール']."rn");
echo 'email_num='.$email_num."rn";
}
*/
}
}
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[ '電子メール'].' CSDN:'.$rt['ユーザー名'].'|'.$rt['csdn_password'].'|'.$rt['csdn_email']."rn");
echo 'username_num='.$username_num."rn";
}
}
$uid = $nextuid;
echo 'uid='.$uid;
}
?>
总对比時間25分、相比较前10数回の実行真是大有提升
总重名用户:34175
占总会员率:1.7%
1.7%の重名用户も挺严重い、希望本文では各位局に比べて本局の利用者に役立つ支援を提供します

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック

Google Authenticator はユーザー アカウントのセキュリティを保護するために使用されるツールであり、そのキーは動的検証コードを生成するために使用される重要な情報です。 Google Authenticator のキーを忘れて、セキュリティ コードでしか認証できない場合は、この Web サイトの編集者が Google セキュリティ コードの入手先について詳しく説明しますので、お役に立てれば幸いです。詳細を知る ユーザーは以下を読み続けてください。まず電話の設定を開き、設定ページに入ります。ページを下にスクロールして Google を見つけます。 Googleページに移動し、「Googleアカウント」をクリックします。アカウント ページに入り、確認コードの下にある [表示] をクリックします。パスワードを入力するか、指紋を使用して身元を確認します。 Google セキュリティ コードを取得し、そのセキュリティ コードを使用して Google の ID を確認します。

Go 言語は、効率的かつ簡潔で習得が容易なプログラミング言語であり、同時プログラミングやネットワーク プログラミングに優れているため、開発者に好まれています。実際の開発ではデータベースの操作が欠かせませんが、今回はGo言語を使ってデータベースの追加・削除・変更・クエリ操作を実装する方法を紹介します。 Go 言語では、データベースを操作するために通常、よく使用される SQL パッケージや gorm などのサードパーティ ライブラリを使用します。ここでは SQL パッケージを例として、データベースの追加、削除、変更、クエリ操作を実装する方法を紹介します。 MySQL データベースを使用していると仮定します。

Hibernate ポリモーフィック マッピングは、継承されたクラスをデータベースにマップでき、次のマッピング タイプを提供します。 join-subclass: 親クラスのすべての列を含む、サブクラス用の別個のテーブルを作成します。 table-per-class: サブクラス固有の列のみを含む、サブクラス用の別個のテーブルを作成します。 Union-subclass: join-subclass と似ていますが、親クラス テーブルがすべてのサブクラス列を結合します。

Apple の最新リリースの iOS18、iPadOS18、および macOS Sequoia システムでは、さまざまな理由で紛失または破損した写真やビデオをユーザーが簡単に回復できるように設計された重要な機能が写真アプリケーションに追加されました。この新機能では、写真アプリのツール セクションに「Recovered」というアルバムが導入され、ユーザーがデバイス上に写真ライブラリに含まれていない写真やビデオがある場合に自動的に表示されます。 「Recovered」アルバムの登場により、データベースの破損、カメラ アプリケーションが写真ライブラリに正しく保存されない、または写真ライブラリを管理するサードパーティ アプリケーションによって失われた写真やビデオに対する解決策が提供されます。ユーザーはいくつかの簡単な手順を実行するだけで済みます

HTML はデータベースを直接読み取ることはできませんが、JavaScript と AJAX を通じて実現できます。この手順には、データベース接続の確立、クエリの送信、応答の処理、ページの更新が含まれます。この記事では、JavaScript、AJAX、および PHP を使用して MySQL データベースからデータを読み取る実践的な例を示し、クエリ結果を HTML ページに動的に表示する方法を示します。この例では、XMLHttpRequest を使用してデータベース接続を確立し、クエリを送信して応答を処理することで、ページ要素にデータを埋め込み、データベースを読み取る HTML の機能を実現します。

MySQLi を使用して PHP でデータベース接続を確立する方法: MySQLi 拡張機能を含める (require_once) 接続関数を作成する (functionconnect_to_db) 接続関数を呼び出す ($conn=connect_to_db()) クエリを実行する ($result=$conn->query()) 閉じる接続 ( $conn->close())

PHP でデータベース接続エラーを処理するには、次の手順を使用できます。 mysqli_connect_errno() を使用してエラー コードを取得します。 mysqli_connect_error() を使用してエラー メッセージを取得します。これらのエラー メッセージをキャプチャしてログに記録することで、データベース接続の問題を簡単に特定して解決でき、アプリケーションをスムーズに実行できるようになります。

PHP は Web サイト開発で広く使用されているバックエンド プログラミング言語であり、強力なデータベース操作機能を備えており、MySQL などのデータベースとの対話によく使用されます。ただし、中国語の文字エンコーディングは複雑であるため、データベース内で中国語の文字化けを処理するときに問題が発生することがよくあります。この記事では、文字化けの一般的な原因、解決策、具体的なコード例を含め、データベース内の中国語の文字化けを処理するための PHP のスキルと実践方法を紹介します。文字化けの一般的な原因は、データベースの文字セット設定が正しくないことです。データベースの作成時に、utf8 や u などの正しい文字セットを選択する必要があります。
