Fatal error: Call

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Fatal error: Call

    Hai,

    habe eine MySQL-Datenbank für mein Projekt benutzt, der Serverhost beklagt sich aber über zuviele Zugriffe. (soll dbm benutzen).

    Habe folgenden Code gefunden:

    <?php
    $dbm = dbmopen("lastseen", "w");
    if (dbmexists($dbm, $userid)) {
    $last_seen = dbmfetch($dbm, $userid);
    } else {
    dbminsert($dbm, $userid, time());
    }
    do_stuff();

    dbmreplace($dbm, $userid, time());
    dbmclose($dbm);

    ?>


    Aber ich kriege eine Fehlermeldung
    Fatal error: Call to undefined function: do_stuff() in /homepages/..../test.php on line 8



    Kann jemand helfen?

  • #2
    am besten du holst dir die fehlende Funktion do_stuff() von dort, wo du's her hast. Nur so kannst du nachvollziehen, was die Funktion macht. Oder laß sie einfach mal weg und schau was passiert....

    Übrigens: wie beklagt sich den dein Server über zuviele Zugriffe??

    Kommentar


    • #3
      Hab den Schnipsel von
      http://jesseowens.fmh.utl.pt/doc/php...l/ref.dbm.html
      und wenn ich do_... weglasse schreibt mir das Script nur Datenmüll in die Datei.

      Habe beim Hoster gesehen, das MySQL nicht für Charts, Ranking, Linkliste etc gebraucht werden soll.

      Da ich genau das haben wollte hab ich die Servicehotline angerufen und mich erkundigt. Die haben gesagt 1000 Zugriffe pro Stunde ist einfach zuviel.( Die habe ich, weil der Rang des Teilnehmers meiner Liste beim Teilnehmer angezeigt wird und somit jeder Aufruf der Teilnehmerseite eine Datenbankabfrage hervorruft :-)).

      Ergo hat man mir nahegelegt DBM zu benutzen. Zitat:


      Datenbank-Zugriff

      Zugangsdaten für Ihren MySQL-Datenbankzugriff.

      Hinweis: Bitte beachten Sie, daß die Datenbank unter keinen Umständen für Logauswerteverfahren (z.B. ivw), Add-Clicks oder Bannerrotations verwendet werden sollte. Bitte realisieren Sie dieses Vorhaben z.B. mit DBM-Files.

      Aber zum do_st... keine Ahnung, wie ich dahinter steigen soll, hab den Begriff im Netz suchen lassen aber nur Schrott gefunden.

      Übrigens Thanxx für die prompte Antwort, sollten sich andere Foren mal ne Scheibe von abschneiden!!!:-))

      Kommentar


      • #4
        Hi,

        aha, okay. Aber dein Skript scheint ja von hier http://www.php.net/manual/de/ref.dbm.php zu kommen. Dort kannst du eigentlich nachlesen, wie alles geht. Habe ich noch nie gebraucht. Allerdings kannst du meiner Meinung nach diese Funktion do_stuff() weglassen.
        Wichtig ist erstmal, daß das File existiert, welches du mit dbmopen() öffnest. Den Erfolg kannst du mit

        if ($dbm==false) echo "Kein DBM-File gefunden";

        überprüfen. Anschliessend wird, falls der Datensatz existiert, der User-Datensatz geholt und mit der aktuellen Zeit geupdated.
        Also:

        Code:
        $dbm = dbmopen("mein_filename", "w"); // DBM-File öffnen mit Schreib-Lese-Recht 
        if ($dbm==false) {
        echo "Kein DBM-File gefunden";
        }
        else { 
        if (dbmexists($dbm, $userid)) {   // check, ob User-Satz vorhanden
        $last_seen = dbmfetch($dbm, $userid);   // wenn ja, dann lese Datensatz
        } 
        else { 
        dbminsert($dbm, $userid, time());   // wenn nein, dann einfügen
        } 
        }
        
        dbmreplace($dbm, $userid, time());  // hier, egal ob neu angelegt oder schon vorhanden, nochmals updaten
        dbmclose($dbm);   // und schliessen
        und falls Userid schon vorhanden war, hast du in $last_seen den letzten Stand. Kommt halt ganz darauf an, was du machen willst, aber eigentlich hast du alle Befehle (siehe oben Link) zur Verfügung wie bei Datenbank reinzuschreiben und zu lesen und so.

        Kommentar

        Lädt...
        X