Hi. ich habe ein code entwickelt, der deutlich die ladezeit überschreitet. gibt es eine möglichkeit die ladezeit zu umgehen? mit header funktioniert das anscheiend nicht.
lade zeit zu überschreiten PHP
-
-
Wie wär's mit Script optimieren? ini_set mit max_execution_time könnte helfen, muss aber nicht. Wenn du Zugriff auf die php.ini hast, kannst du den Wert darin erhöhen.
-
PHP
Alles anzeigen<?php ob_start(); $M_HOST = "lxxxx"; $M_USER = "xxxx"; $M_PASS = "xxx"; $M_DATA = "xxxx"; function dbcon($host, $user, $pass, $data) { $connect= mysql_connect($host, $user, $pass) or die("Konnte keine Verbindung zum Datenbankserver aufbauen!"); $selectDB= mysql_select_db($data, $connect) or die("Konnte die Datenbank [b]".$data."[/b] nicht auswählen!"); } dbcon($M_HOST,$M_USER,$M_PASS,$M_DATA); $karten[] = "Ah"; $karten[] = "Kh"; $karten[] = "Qh"; $karten[] = "Jh"; $karten[] = "Th"; $karten[] = "9h"; $karten[] = "8h"; $karten[] = "7h"; $karten[] = "6h"; $karten[] = "5h"; $karten[] = "4h"; $karten[] = "3h"; $karten[] = "2h"; $karten[] = "Ac"; $karten[] = "Kc"; $karten[] = "Qc"; $karten[] = "Jc"; $karten[] = "Tc"; $karten[] = "9c"; $karten[] = "8c"; $karten[] = "7c"; $karten[] = "6c"; $karten[] = "5c"; $karten[] = "4c"; $karten[] = "3c"; $karten[] = "2c"; $karten[] = "Ak"; $karten[] = "Kk"; $karten[] = "Qk"; $karten[] = "Jk"; $karten[] = "Tk"; $karten[] = "9k"; $karten[] = "8k"; $karten[] = "7k"; $karten[] = "6k"; $karten[] = "5k"; $karten[] = "4k"; $karten[] = "3k"; $karten[] = "2k"; $karten[] = "Ap"; $karten[] = "Kp"; $karten[] = "Qp"; $karten[] = "Jp"; $karten[] = "Tp"; $karten[] = "9p"; $karten[] = "8p"; $karten[] = "7p"; $karten[] = "6p"; $karten[] = "5p"; $karten[] = "4p"; $karten[] = "3p"; $karten[] = "2p"; $hand = 0; $hand2 = 0; $flop = 0; $flop2 = 0; $flop3 = 0; $turn = 0; $river = 0; while ($hand < 52) { $karte1 = $karten[$hand]; while ($hand2 < 52) { if ($hand != $hand2) { $karte2 = $karten[$hand2]; while ($hand3 < 52) { if ($hand != $hand3 and $hand3 != $hand2) { $karte3 = $karten[$hand3]; while ($hand4 < 52) { if ($hand != $hand4 and $hand4 != $hand2 and $hand3 != $hand4) { $karte4 = $karten[$hand4]; while ($hand5 < 52) { if ($hand != $hand5 and $hand5 != $hand2 and $hand3 != $hand5 and $hand4 != $hand5) { $karte5 = $karten[$hand5]; while ($hand6 < 52) { if ($hand != $hand6 and $hand6 != $hand2 and $hand3 != $hand6 and $hand4 != $hand6 and $hand5 != $hand6) { $karte6 = $karten[$hand6]; while ($hand7 < 52) { if ($hand != $hand7 and $hand7 != $hand2 and $hand3 != $hand7 and $hand4 != $hand7 and $hand5 != $hand7 and $hand6 != $hand7) { $karte7 = $karten[$hand7]; $registrieren = "INSERT INTO poker (hand,hand2,flop,flop2,flop3,turn,river) VALUES ('".$karte1."','".$karte2."','".$karte3."','".$karte4."','".$karte5."','".$karte6."','".$karte7."');"; $registrieren2 = mysql_query ($registrieren) or die (mysql_error()); } $hand7++; } } $hand6++; $hand7 = 0; } } $hand5++; $hand6 = 0; } } $hand4++; $hand5 = 0; } } $hand3++; $hand4 = 0; } } $hand2++; $hand3 = 0; } $hand++; $hand2 = 0; } ?>
(ich hoffe es bliebt formartiert)
das ist ein script, das ich geschrieben habe um jede mögliche endhand im poker zu
ermitteln. leider ist das problem, dass ca 374,2 Millarden Möglichkeiten, exestieren wie sie erscheinen. es können abe rnur ca 1,3 Millionen auf einmal in eine mysql tabelle geschrieben werden. dann wird es unterbrochen.meine idee ist: es ist doch egal, ob ich auf meiner hand Ac und Dh oder Dh und Ac halte. Da würde sich die zahl der möglichen hände schon mal halbieren. außerdme ist es doch wurscht ob im flop Ac Dh Th oder Dh Ac Th liegt. somit wäre die zahl wieder 6 mal kleiner. also im endeffekt 12 mal kleiner. hat eienr ne idee wie ich es im script um setzen könnte?
außerdem habe ich berechnet, dass wenn in 10 sekunden 1,5 millionen einträge geschrieben werden, dass es nur noch ca 1,7 stunden übrig bleiben würden.
-
Es gibt Dinge, da ist PHP einfach nicht die richtige Wahl und das trifft hier auch zu.
-
phpfan, ich gebe dir Recht, für soetwas ist PHP einfach ungeeignet, aber es ist machbar.
Einfach so, als technische Herausforderung.
Man könnte zum Beispiel versuchen das Skript nach 30 sek zu unterbrechen, alle Variablen abspeichern und dann das Skript mit eben diesen Variablen neu aufrufen. Das alles ähnlich wie ein Multithreading-Betriebssystem, welches ja auch Programme unterbricht und nach und nach wieder aufruft.MfG Boman
-
loool
Wie wärs mit
1. Platz auf der Platte machen. (die DB wird nicht kleiner )
2. Alle Programme schliessen
3. TaskManager oder Terminal->Top aufmachen
4. php.ini anpassen (max_execution_time mal auf 9999 und memory_limit auf 1GB)
5. Browser öffnen und anfangenEs gibt Leute die erstellen Rainbow Tables andere wollen jede Hand vom Pokern
Mach das mit einer Hardware näheren Sprache z.B. C++ oder Java aber ned PHP.
Was für Begrenzungen in der Sicht beim Mysql stehen weiss ich nicht.
_Ich war so freilich und probierte das ganze mal aus.
Eckdaten der Messung:
Client: Ubuntu 7.04
1GB Ram + Amd Athlon 64 3500+
Firefox 2.0.0.4Server:
Apache2 + PHP5
Debian Etch 64 Bit
In ner VM!
1GB RAM + AMD Athlon 64 3700+Zusätzlich alles Mysql zeugs aus deinem Script entfern und einen Echo auf $karte1 bis $karte 7.
Normalerweise brauchen meine Dienste auf dem Server zusammen 0% CPU Auslasstung bei dem Script war der Höhepunkt um die 4.4% CPU und 1%Ram also 10MB
Client *g*
Firefox brauchte 98% der CPU und 95% vom RAMmax_execution_time = 45
memory_limit 16M