10sek Sperre umgehen.

Acriss

Gesperrt
Hi,
ich habe ein Script geschrieben, das 400mrd ZahlenKombinationen checken muss.

Leider taucht immer derselbe Fehler auf:

Fatal error: Maximum execution time of 10 seconds

Wie kann ich das umgehen?
 
Nur möglich, wenn du Zugriff auf die Einstellungen der php.ini hast.

Dies könnte mit [phpf]ini_set[/phpf] geschehen oder mit einer .htaccess über php_value


Allerdings ist die Frage ob es wirklich Sinn macht 400 Mrd. Zahlenkombinationen mit PHP durchzurechnen. Das ganze hört sich irgendwie nach einer Bruteforce-ähnlichen Attacke an?
 
Naja musst in der Serverconfig halt die Scriptlaufzeit erhöhen , oder du baust das script so auf das es sich selbst nach 100 Datensätzen immer aktuallisiert. Musst dann halt nur immer übergeben bei welchen Datensatz du gerad warst also so grob mal als Beispiel eben aussn Fingern gesaugt ...:

PHP:
$r = 1
schleife (.....) {
     // datensatzverarbeiten code
    
// nach dem 100. Schleifendurchlauf wird die datei einfach nochmal aufgerufen und per get die aktuelle datensatznummer mitgeliefert das man dann da weiter machen kann wo man aufgehört hat so lange bis man fertig ist.
    if($r == 100) {
        header(........);
        exit;
    }
    $r++;
}

Das halt jetzt mal so als grober Vorschlag .. müsste man dann sicher noch verfeinern und zb das Auslesen der db, oder wo auch immer sich die Daten drin befinden, optimieren, so das man dann halt immer blos 100 Datensätze im array hat und da nich zig 1000 datensätze noch bei sind die man eh erst mit den nächsten Aufrufen abarbeitet.


greez Blue
 
Bruteforce. Meinst du damit einen Server lahm zu legen?

Das ganze ist für einen Kumpel, der ein Spiel hat, und er will das da alle Kombis gecheckt werden.
Das sind dann 10 verschiedene Zahlen, die den Wert von 1-70 annehmen können.

Zugriff auf die ini hab ich nicht.
 
Nein, Bruteforce ist ein Massenangriff auf ein Passwort (als Beispiel) wo einfach alle Kombinationen versucht werden.

Dann würde ich eine Variante bluex Vorschlag durchführen:

PHP:
<?php

session_start();

if(empty($_SESSION['counter']) || !ctype_digit($_SESSION['counter']))
{
  $_SESSION['counter'] = (int)0;
  # Hier jetzt bearbeiten und den Counter jeweils auf die Zahl hochzählen, bei der du gerade bist
  # Anbieten würde es sich testweise zu verringern, ob er 100000 in 10Seks schafft und so weiter.
  
  $_SESSION['counter'] = $var; # Wobei $var für den jetzigen Counterstand steht
}
else
{
  # Hier jetzt einfach weiterprobieren eben mit $_SESSION['counter'] als Startwert
}
?>

Und eben immer einen Link ausgeben, der auf "Weitermachen" zeigt und die Session ID mitübergibt.

Eine völlig automatisierte Methode wirst du in 10 Sekunden für mehrere Milliarden Kombinationen nicht hinbekommen.
Vielleicht vernünftigen Webspace holen?

Übrigens sehe ich immer noch keinen Sinn in dieser Methode.
Egal was er vorhat, diese Methode finde ich ziemlich "unschön".
 
mhm naja unschön isses allemal . Aber wenn man bei jedem Aufruf über eine Schleife dann immer gleich 100 Kombinationen abkaspert sollte des kein grosses Prob sein denk ich .... wenn du so ein script allerdings sehr offt auf dem Server anwendest wird der hoster irgenwann mal bei dir klingeln und dir sagen das du zu viel Serverlast verursachst und sich des Problems entledigen ^^

Hab ein ähnliches sript mal für ein kleines cms gebaut um die Installation etwas zu Automatisieren und alle anfallenden Arbeiten in einen Rutsch zu machen ohne dabei evtl ein Zeitlimit zu überschreiten. (db erstellen , templates importieren, dateisystem erstellen usw...)
 
Ich habe dafür schonmal einen Thread im MySQL-Forum hier gepostet, der ist inzwischen aber auf Seite 2 und unbeantwortet.
Es sollen gleiche Kombinationen gefunden werden.
Z.B:
1,4,7, 20, 25, 26, 41, 59, 60, 65
7, 8, 9, 15, 20, 23, 25, 42, 49, 70
usw.

Ich habe nur anders keine Idee, wie ich das realisieren soll, da es ziemlich viele Einträge gibt, und die sich täglich erhöhen.
 
Erklar uns doch mal was das ganze bezwecken soll.Dann kann man villeicht auch mit besseren Ideen kommen.
Für was brauchst du diesen zahlen abgleich?

Mfg Splasch
 
Vielleicht gefällt dir das hier ja:

PHP:
<pre>
<?php
$string = "hallo ich bin ein string mit vielen doppelten strings und ich bin auch eine amoebe, die gerne 
          hunde isst. Vielleicht magst du mich auch? Oder etwa doch nicht? Warum nicht?";

$arr = str_word_count($string, 1);

print_r(array_count_values($arr));
?>
</pre>

Dort könntest du jetzt einfach per [phpf]array_search[/phpf] prüfen ob dein Value da ist und auslesen wieviele es denn gibt.
 
Zurück