PHP Forum

PHP Forum (http://www.selfphp.de/forum/index.php)
-   PHP Grundlagen (http://www.selfphp.de/forum/forumdisplay.php?f=12)
-   -   Converter (http://www.selfphp.de/forum/showthread.php?t=25909)

Fake 09.08.2016 04:29:08

Converter
 
Guten Abend!

Ich suche jemand der mir folgenden Code irgendwie in eine Schleife packen kann.
All meine Versuche enden in unendlichen nicht auflösbaren Schleifen...

PHP-Code:

$code "76561198034968045";
$temp "";
        
for(
$i 0$i 8$i++)
{
    
$temp .= chr($code 0xFF);
    
$code >>= 8;
}
        
$end_code md5("BE" $temp); 

Da die Umkehrung von $end_code in $code nicht möglich ist, versuche ich eine
Datenbank zu generieren, die von $code_min bis $code_max alle Einträge enthält.

Die Dimension bewegt sich im Bereich von rund 500-700 Millionen Datensätzen.
( das ist KEIN Witz )

PHP-Code:

$code_min "76561197800000000";
$code_max "76561198300000000"

Das wären die vorläufigen Minimal- bzw. Maximalwerte.


Was ich auch versuche eine Schleife um den gesamten Code zu packen,
ja eine simple Schleife die $code_min ++ solange $code_min < $code_max.

Es wird immer eine Endlosschleife bei mir...

PHP-Code:

$code_min "76561197800000000";
$code_max "76561197800000009"

Selbst bei einer Differenz von nur 9 kommt eine Endlosschleife raus?

ICH BENÖTIGTE WIRKLICH SEHR DRINGEND HILFE!

Falls jemand die nötigen Kenntnisse hat... :)

vt1816 09.08.2016 18:53:41

AW: Converter
 
Dann zeige doch mal Deine (missglückten) Versuche - dann suchen wir jemand der die nötigen Kenntnisse hat.

Fake 09.08.2016 19:01:54

AW: Converter
 
Ganz simpel...
Ich meine ich bin kein Profi, aber auch kein absoluter Anfänger.

Es wird immer zu unentlichen Schleife?!

PHP-Code:

    $id_min "76561197000000000";
    
$id_max "76561198300000000";
    
    for(
$id intval($id_min); $id intval($id_max); $id++)
    {
        
$temp "";
    
        for(
$i 0$i 8$i++)
        {
            
$temp .= chr($id 0xFF);
            
$id >>= 8;
        }

        
$return md5("BE" $temp);
    } 


vt1816 09.08.2016 19:15:56

AW: Converter
 
Ok, und woran machst Du jetzt fest das es sich dabei um eine unendliche Schleife handelt?

Fake 09.08.2016 19:25:15

AW: Converter
 
PHP-Code:

    $id_min "76561197000000000";
    
$id_max "76561198300000000"

Wenn ich die Werte auf folgende abändere:

PHP-Code:

    $id_min "76561197000000000";
    
$id_max "76561197000000010"

... wird das Script niemals fertig.

Obwohl es höchstens 1-2 Sekunden braucht um eine ID zu generieren.

Die Schleife wird niemals fertig und ich frage mich warum?

Klammere ich " $id >>= 8; " aus, funktioniert alles prächtig.
Dieser Schritt ist aber nötig um die ID zu generieren.

vt1816 10.08.2016 10:16:45

AW: Converter
 
Zitat:

Zitat von Fake (Beitrag 148760)
PHP-Code:

    $id_min "76561197000000000";
    
$id_max "76561198300000000";
    
    for(
$id intval($id_min); $id intval($id_max); $id++)
    {
        
$temp "";
    
        for(
$i 0$i 8$i++)
        {
            
$temp .= chr($id 0xFF);
            
$id >>= 8;
        }

        
$return md5("BE" $temp);
    } 


Dieser Code ergibt - zumindest bei mir - keine Endlosschleife. Denn intval($id_min) = intval($id_max). Somit wird die Schleife nie ausgeführt.

Tipp: Beschäftige Dich mal mit der möglichen Größe von numerischen Variablen. Lass Dir dazu mal die intval($id_min) und intval($id_max) ausgeben. Was stellt Du fest?


Und ja, konnte die Endlosschleife trotzdem nachvollziehen. Wieso manipulierst Du $id an zwei Stellen? Durch
PHP-Code:

$id >>= 8

wird $id nach entsprechender Anzahl von Durchläufen = 0 und Deine Schleife wird so kein Ende finden ( immer $id < $id_max). Hier noch mal Deine Programmlogik überdenken bzw. mit weiterer Variablen arbeiten.


Zitat:

Zitat von Fake (Beitrag 148760)
Falls jemand die nötigen Kenntnisse hat... :)

Dein Urteil?

Fake 10.08.2016 12:08:56

AW: Converter
 
Ja, war mir dann, ein bisschen spät, aufgefallen. :D

Deshalb hatte ich eine Funktion aus dem Converter
gemacht und diese in einer Schleife aufgerufen.
Und nun warte ich und warte und warte...

Nach Anpassung von min/max komme ich auf genau
500.000.000 Datensätze. Dauert ziemlich lang die zu generieren.

Fake 10.08.2016 12:18:52

AW: Converter
 
Aber eine Frage hätte ich dann doch noch...
Deine persönliche Meinung ist gefragt.

Ich habe mich mit MySQL Prozeduren noch nie befasst, würde aber gern mal
wissen wollen, ob automatisch beim Hinzufügen eines Datensatzes in Tabelle (B)
die passende ID aus Tabelle (A) zugeordnet werden kann?

Tabelle A

id | conv_id
-------------
76561198107318624 | 7ae829b1d3ba5e86f7760d6976929d05

Ein neuer Eintrag in Tabelle (B) beinhaltet immer den "conv_id" Wert.
Benötigt wird aber zusätzlich auch der eigentlich, nicht zu convertierende,
Ursprungswert, hier ID.


Ist es möglich eine solche Prozedur zu erstellen?

Ist es in deinen Augen "schaffbar" für bsp. 1000 neue Einträge
in Tabelle (B) zeitnah die ID aus Tabelle (A) aus 500 Millionen
Datensätzen zuzuordnen?

vt1816 10.08.2016 13:28:52

AW: Converter
 
Zitat:

Zitat von Fake (Beitrag 148765)
[..]
Ist es möglich eine solche Prozedur zu erstellen?

Ja.


Zitat:

Zitat von Fake (Beitrag 148765)
[..]
Ist es in deinen Augen "schaffbar" für bsp. 1000 neue Einträge
in Tabelle (B) zeitnah die ID aus Tabelle (A) aus 500 Millionen
Datensätzen zuzuordnen?

Definiere "zeitnah".
Weiterführende Mutmassungen wären hoch spekulativ, da keine Rahmenbedingungen bekannt sind (Dateiaufbau, DBMS, Server, RAM, HD, Anbindung, etc.).

chorn 10.08.2016 15:05:06

AW: Converter
 
Zitat:

Zitat von vt1816 (Beitrag 148766)
(Dateiaufbau, DBMS, Server, RAM, HD, Anbindung, etc.).

Index!


Alle Zeitangaben in WEZ +2. Es ist jetzt 09:03:56 Uhr.

Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.