php排序1亿个QQ号码解决方案
php排序1亿个QQ号码
吃饱喝足了,还发贴了。
拆开分成几千份进行排序再合并。
首先先创建一个1亿个QQ号的txt。
- PHP code
<!-- Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ --> <?php // 创建一亿个QQ号的txt (大约需85~100秒) set_time_limit(0); $fn = 'qq.txt'; $fp = fopen($fn, 'w'); $st = microtime(true); $l = range(0,10000); shuffle($l); foreach ($l as $k=>$v) { $arr = range($v*10000+10000,10000*($v+1)+9999); shuffle($arr); fputs($fp,implode("\n", $arr)."\n"); unset($arr); } echo microtime(true)-$st; ?>
稍等一两分钟1亿个随机QQ创建完成了。
QQ号码范围为>10000。文件大小大概有840MB。
下面就进行分类划分成几千份文件。
以QQ号码长度为文件夹,QQ号码前3位为文件名。
- PHP code
<!-- Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ --> <?php // 长度号码分类 (大约需360~400秒) set_time_limit(0); $st = microtime(true); if(!is_dir('qq_no')) mkdir('qq_no'); $file = fopen('qq.txt', 'r'); $i=0; $end_s = ''; while(!feof($file)) { $g = 1042*1024; fseek($file,$g*$i); $s = fread($file, $g); $end = strrpos($s, "\n"); $arr_s = $end_s.substr($s, 0, $end); $end_s = substr($s, $end); $arr = explode("\n", $arr_s); foreach ($arr as $k=>$v) { if($v!='') { $tag = "$v[0]$v[1]$v[2]"; $text_arr[strlen($v)][$tag][] = $v; } } foreach ($text_arr as $k=>$v) { $n_dir = 'qq_no/'.$k; if (!is_dir($n_dir)) mkdir($n_dir); foreach ($v as $tag=>$val) { $n_tf = fopen($n_dir.'/'.$tag.'.txt', 'a+'); fputs($n_tf,implode("\n",$val)."\n"); } } unset($text_arr); ++$i; } echo microtime(true)-$st; ?>
最后就要每个文件进行排序合并数据了。
- PHP code
<!-- Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ --> <?php // 排序完成拉 (800~920秒) set_time_limit(0); $st = microtime(true); $qq_done = fopen('qq_done.txt', 'a+'); $root = 'qq_no'; $dir_array = scandir($root); foreach ($dir_array as $key=>$val) { if ($val != '.' && $val != '..') $dirs[$val] = scandir($root.'/'.$val); } foreach ($dirs as $key=>$val) { foreach ($val as $v) { if ($v != '.' && $v != '..') { $file = $root. '/' . $key . '/'. $v; $c = file_get_contents($file); $arr = explode("\n", $c); sort($arr); fputs($qq_done, implode("\n",$arr)); unlink($file); } } rmdir($root. '/' . $key); } rmdir($root); echo microtime(true)-$st; ?>
总共大概花费了20多分钟。
虽然完成了,但方法很土鳖 0_0 ,坛里各位高手们改进改进啊。
------解决方案--------------------
来个C版本的
- C/C++ code
#include <stdio.h> #define BITSPERWORD 32 #define SHIFT 5 #define MASK 0x1F #define N 100000000 int a[1 + N/BITSPERWORD]; void set(int i) { a[i>>SHIFT] |= (1>SHIFT] &= ~(1>SHIFT] & (1<font color="#e78608">------解决方案--------------------</font><br> <br>既然有现成的数据文件,就没有必要去构造插入串了<br><dl class="code">PHP code<pre class="brush:php;toolbar:false"> set_time_limit(0); $sql =

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



1. Perbezaan antara Iterator dan foreach ialah perbezaan polimorfik (lapisan bawah foreach ialah Iterator ialah jenis antara muka, dan ia tidak mengambil berat tentang jenis pengumpulan atau tatasusunan untuk dan untuk setiap perlu mengetahui jenisnya). koleksi pertama, dan juga jenis elemen dalam koleksi 1. Mengapa dikatakan bahawa lapisan bawah foreach adalah kod yang ditulis oleh Iterator: Kod decompiled: 2. Perbezaan antara keluarkan dalam foreach dan iterator Pertama, lihat di Manual Pembangunan Java Alibaba, tetapi tiada ralat akan dilaporkan dalam kes 1, dan ralat akan dilaporkan dalam kes 2 (java. util.ConcurrentModificationException) terlebih dahulu

Langkah-langkah untuk PHP untuk menentukan bilangan gelung foreach: 1. Buat tatasusunan "$fruits"; 2. Buat pemboleh ubah pembilang "$counter" dengan nilai awal 0 melalui tatasusunan, dan Tingkatkan nilai pembolehubah pembilang dalam badan gelung, dan kemudian keluarkan setiap elemen dan indeksnya 4. Keluarkan nilai pembolehubah pembilang di luar gelung "foreach" untuk mengesahkan elemen yang dicapai gelung;

Artikel ini akan menerangkan secara terperinci bagaimana PHP mengembalikan tatasusunan selepas membalikkan nilai utama Editor berpendapat ia agak praktikal, jadi saya berkongsi dengan anda sebagai rujukan saya harap anda boleh memperoleh sesuatu selepas membaca artikel ini. PHP key value flip Array key value flip ialah operasi pada tatasusunan yang menukar kunci dan nilai dalam tatasusunan untuk menjana tatasusunan baharu dengan kunci asal sebagai nilai dan nilai asal sebagai kunci. Kaedah pelaksanaan Dalam PHP, anda boleh melakukan pembalik nilai kunci tatasusunan melalui kaedah berikut: fungsi array_flip(): Fungsi array_flip() digunakan khas untuk operasi flip nilai kunci. Ia menerima tatasusunan sebagai hujah dan mengembalikan tatasusunan baharu dengan kunci dan nilai ditukar. $original_array=[

Apakah itu AMP Coin? Token AMP telah dicipta oleh pasukan Synereo pada tahun 2015 sebagai mata wang dagangan utama platform Synereo. Token AMP bertujuan untuk memberikan pengguna pengalaman ekonomi digital yang lebih baik melalui pelbagai fungsi dan kegunaan. Tujuan Token AMP Token AMP mempunyai pelbagai peranan dan fungsi dalam platform Synereo. Pertama, sebagai sebahagian daripada sistem ganjaran mata wang kripto platform, pengguna dapat memperoleh ganjaran AMP dengan berkongsi dan mempromosikan kandungan, mekanisme yang menggalakkan pengguna untuk mengambil bahagian secara lebih aktif dalam aktiviti platform. Token AMP juga boleh digunakan untuk mempromosikan dan mengedarkan kandungan pada platform Synereo. Pengguna boleh meningkatkan keterlihatan kandungan mereka pada platform dengan menggunakan token AMP untuk menarik lebih ramai penonton melihat dan berkongsi

php提交表单通过后,弹出的对话框怎样在当前页弹出php提交表单通过后,弹出的对话框怎样在当前页弹出而不是在空白页弹出?想实现这样的效果:而不是空白页弹出:------解决方案--------------------如果你的验证用PHP在后端,那么就用Ajax;仅供参考:HTML code

Artikel ini akan menerangkan secara terperinci tentang elemen semasa dalam tatasusunan yang dikembalikan oleh PHP Editor berpendapat ia agak praktikal, jadi saya berkongsi dengan anda sebagai rujukan saya harap anda boleh memperoleh sesuatu selepas membaca artikel ini. Dapatkan elemen semasa dalam tatasusunan PHP PHP menyediakan pelbagai kaedah untuk mengakses dan memanipulasi tatasusunan, termasuk mendapatkan elemen semasa dalam tatasusunan. Berikut memperkenalkan beberapa teknik yang biasa digunakan: 1. current() function Fungsi current() mengembalikan elemen yang sedang ditunjuk oleh penunjuk dalaman tatasusunan. Penunjuk pada mulanya menunjuk kepada elemen pertama tatasusunan. Gunakan sintaks berikut: $currentElement=current($array);2.key() function key() fungsi mengembalikan elemen yang sedang ditunjuk oleh penunjuk dalaman tatasusunan

Perbezaan: 1. untuk gelung melalui setiap elemen data melalui indeks, manakala untukSetiap gelung melalui elemen data tatasusunan melalui program asas JS 2. kerana boleh menamatkan pelaksanaan gelung melalui kata kunci rehat, tetapi untukSetiap tidak boleh; . for boleh mengawal pelaksanaan gelung dengan mengawal nilai pembolehubah gelung, tetapi forEach tidak boleh 4. untuk boleh memanggil pembolehubah gelung di luar gelung, tetapi forEach tidak boleh memanggil pembolehubah gelung di luar gelung 5. Kecekapan pelaksanaan bagi; adalah lebih tinggi daripada untukSetiap.

Bagaimana untuk lelaran melalui sifat objek menggunakan fungsi forEach? Dalam JavaScript, kita sering perlu melintasi sifat objek. Jika anda mahukan cara ringkas untuk mengulangi sifat objek, fungsi forEach ialah pilihan yang bagus. Dalam artikel ini, kami akan menerangkan cara menggunakan fungsi forEach untuk mengulangi sifat objek dan memberikan contoh kod khusus. Mula-mula, mari kita fahami penggunaan asas bagi fungsi forEach. forSetiap fungsi ialah Java
