Ein bisschen Spass muss sein: Was können unsere Mobil Telefone wirklich?
Ich will alle deutschen Mobilfunk- Telefonnummern haben und mein Telefon damit füttern. Genug Speicher habe ich um die Datenmengen zu lagern. Aber ich bin mal gespannt was der RAM und die CPU sagen wenn ein paar Millionen Telefonnummern das Tageslicht meines Adressbuches erblicken 🙂

Wetten es stürzt ab!?

Vorbereitung

Welche Mobil Vorwahlen gibt es?
Welche Nummern Bereiche gibt es? 6, 7, 8 oder mehr stellig?

Vorwahl- Nummern

Deutsche Telekom

01511, 01512, 01514, 01515, 01516, 01517, 0160, 0170, 0171, 0175

Vodafone

01520, 01522, 01523, 01525, 0162, 0172, 0173, 0174

E-Plus

01570, 01573, 01575, 01577, 01578, 0163, 0177, 0178

O2

01590, 0176, 0179

Nummern Bereiche

Es gibt in Deutschland 7 bis 8 stellige Nummern (derzeit gängige Zahlenbereiche). Da ich nicht die genauen Zahlen kenne welche Bereiche im Einsatz sind müssen also 7 und 8 stellige Zahlenbereiche erstellt werden bis man es eingrenzen kann oder erweitern muss.

Zahlen generieren

WARNUNG!!!
Diese Funktionen sollten nicht im Browser ausgeführt werden! Es werden einige Millionen Datensätze erzeugt die ggf. den Browser oder sogar das OS mangels freier Ressourcen lahm legen oder zum Absturz bringen!

<?php
$anbieter = array(
    // 'test' => array('99','88','77'),
    'o2' => array( '01590','0176','0179'),
    'eplus' => array( '01570','01573','01575','01577','01578','0163','0177','0178'),
    'vodaphone' => array( '01520','01522','01523','01525','0162','0172','0173','0174'),
    'telekom' => array( '01511','01512','01514','01515','01516','01517','0160','0170','0171','0175'),
);
// Anzahl der Stellen festlegen: 7 und 8, aber auch Erweiterbar
$nummernbereich = array(7, 8);

// counter
$cnt = 1;

foreach( $anbieter as $name => $vorwahlen) {
    foreach($vorwahlen as $vorwahl) {
        for($i = $nummernbereich[0]; $i <= $nummernbereich[1]; $i++)
        {
            $nummerMax = (int)str_pad(9, $i ,'9', STR_PAD_LEFT);

            for($nummer=1; $nummer <= $nummerMax; $nummer++) {
                echo $vorwahl .' '. str_pad($nummer, $i ,'0', STR_PAD_LEFT) . '' . PHP_EOL;
                $cnt++;
            }
        }
    }
}

echo PHP_EOL . 'Anzahl der erzeugten Nummern: ' . $cnt .'. Fertig' . PHP_EOL;
Hinweis: Schon aufgefallen? Dieses Script ist auf keinen Fall effizient da für jede Vorwahl und Anbieter der Nummernbereich immer wieder neu erzeugt wird. Eine Beschleunigung der Generation kann um das Zigfache heraus geholt werden wenn man die entsprechenden Schleifen innerhalb des Nummerbereichs implementiert. Die Sortierung wird dann allerdings unschön. Optimal wäre die Trennung von Vorwahlen und Nummern welche man dann bei bedarf zusammenführt. -> Datenbank od. mehrere Textdateien etc. wären dann notwendig. Das ist hier nur Demo.

Ergebnis

Na Toll. Während ich schreibe läuft die Generation der Text-Datei mit Mobil-Nummern immer noch. Derzeit bei der dritten Vorwahl-Nummer und die Datei ist über 3GB. Ich glaube der Import allein wird schon fehl schlagen 😀
Ja wird er 🙂 O2 und E-Plus brauchen bereits 16GB … hätte ich ja auch ausrechnen können aber wo bleibt dann der Spass 😀 Selbst wenn ich Service Nummernbereiche auslassen würde wären es unterm strich immer noch viel zu viele Datenmengen.

Ursprungs Thema

Handy Nummern aller deutschen Netze generieren

Weiterführende Themen

Handynummer suchen: So orten Sie ganz leicht Anrufer | TECHBOOK

MySQL | MariaDB Schleifen (loop, while)