Bernd: User pro server, mysql num rows oder $i++

hallo

ich frage mich wie kann man ungefähr ausrechnen, was ein Server an usern aushalten wird?
Nun sind alle Skripte ein wenig unterschiedlich, aber nehmen wir mal an ein Wordpress Blog oder ein Woltlab Forum, etwas bekanntes in der Art. Für wie viele User braucht man wie viel GHZ/Ram? Es geht mir um einen Schätzwert, es muss nicht exakt sein. Es interessiert mich, wie das ausgerechnet wird, denn ich habe da keine Erfahrung mit. Ich weiß ja ungefähr wie viele User ich gleichzeitig on habe. Aber falls ich mal mehr bekomme, wäre es schön wenn ich nichts zu übergroßes nehme.

Und eine Frage stellt sich mir noch:
$E = mysql_num_rows($SQL)

oder

$I=0;
while($VAR=mysql_fetch_assoc($SQL))
{
$I++;
}

echo $E.' oder '.$I;

Was ist schneller? Ich tippe auf zweite Variante, da erste ja eine extra Verbindung zur DB aufnimmt. Weiß da jemand etwas? Danke!

mfg,
Bernd

  1. Hi,

    $E = mysql_num_rows($SQL)

    oder

    $I=0;
    while($VAR=mysql_fetch_assoc($SQL))
    {
    $I++;
    }

    echo $E.' oder '.$I;

    Was ist schneller?

    Wenn du ausschließlich die Anzahl Datensätze haben willst (und nicht ihren Inhalt) – dann COUNT().

    MfG ChrisB

    --
    Autocomplete has spoiled me to a point where it happens every so often that I encounter a CAPTCHA, and I just type in the first character … and then wait for the rest of the code to be automatically suggested :/
    1. hallo ChrisB,

      Wenn du ausschließlich die Anzahl Datensätze haben willst (und nicht ihren Inhalt) – dann COUNT().

      Ich möchte auch nebenbei Datensätze auslesen.

      mfg,
      Bernd

  2. Mahlzeit,

    ich frage mich wie kann man ungefähr ausrechnen, was ein Server an usern aushalten wird?

    Nein, das hängt von zuvielen Faktoren ab.
    Wenn die Programmiersprache deines backends Unittests unterstützt, wäre das eine Möglichkeit, sich deinem Anliegen anzunähern.

    --
    42
    1. Meine Herren!

      Wenn die Programmiersprache deines backends Unittests unterstützt, wäre das eine Möglichkeit, sich deinem Anliegen anzunähern.

      Unittests benutzt man, um die Korrektheit einer Implementation sicher zu stellen. Man formuliert Testfälle und das dazu erwartete Verhalten, bei guter Test-Abdeckung ensteht auf diese Weise eine Art Spezifikation. Lässt man einen Unittest laufen, dann prüft man also ob die Implementation der Spezifikation entspricht.

      Sie eignen sich nicht, um die Belastbarkeit eines Systems zu testen, dafür benutzt man andere Werkzeuge. Es gab hier neulich einen guten Thread zu dem Thema, aber den konnte ich auf die Schnelle nicht wieder finden. Vielleicht erinnert sich noch jemand daran, ein Nutzer hat gefragt, welche externen Dienstleister es gibt, die Belastungstests für Webseiten durchführen.

      --
      “All right, then, I'll go to hell.” – Huck Finn
      1. Meine Herren!

        M Es gab hier neulich einen guten Thread zu dem Thema, aber den konnte ich auf die Schnelle nicht wieder finden.

        Hier haben wir ihn: https://forum.selfhtml.org/?t=216930&m=1488912

        --
        “All right, then, I'll go to hell.” – Huck Finn
        1. Hallo!

          Hier haben wir ihn: https://forum.selfhtml.org/?t=216930&m=1488912

          Mensch, ich hatte das letztens erst hier gelesen, aber ich habe das wieder mit Pagespeed verwechselt sodass ich das nicht mehr zugeordnet habe. Danke dafür nochmal!

          mfg,
          Bernd

  3. Tach!

    $E = mysql_num_rows($SQL)

    oder

    $I=0;
    while($VAR=mysql_fetch_assoc($SQL))
    {
    $I++;
    }

    Was ist schneller?

    SELECT COUNT(*) FROM ...

    Ich tippe auf zweite Variante, da erste ja eine extra Verbindung zur DB aufnimmt.

    In beiden Fällen muss die Client-API (also der in PHP eingebaute Teil, der für die Kommunikation mit MySQL zuständig ist) alle Datensätze abholen, bevor sie die Datensatzanzahl kennen kann. Das passiert üblicherweise schon beim mysql_query() im Hintergrund. Der Unterschied ergibt sich beim Anwenden der beiden Varianten in deren Laufzeit. Beide können jedoch die Antwort ohne eine weitere Anfrage zum MySQL-Server bringen. Aber für beide sind auch sinnlos die Datensätze übertragen worden, falls man sie nicht weiter braucht.

    dedlfix.

    1. Hi,

      In beiden Fällen muss die Client-API (also der in PHP eingebaute Teil, der für die Kommunikation mit MySQL zuständig ist) alle Datensätze abholen, bevor sie die Datensatzanzahl kennen kann. Das passiert üblicherweise schon beim mysql_query() im Hintergrund. Der Unterschied ergibt sich beim Anwenden der beiden Varianten in deren Laufzeit. Beide können jedoch die Antwort ohne eine weitere Anfrage zum MySQL-Server bringen. Aber für beide sind auch sinnlos die Datensätze übertragen worden, falls man sie nicht weiter braucht.

      Ich glaube ich habe mich nur falsch ausgedrückt. Ich wollte eigentlich auch Datensätze mit ausgeben. Aber gut, dass ich an das Count(*) erinnert wurde. BTW: Gute übersichtliche Erklärung!

      mfg,
      Bernd