Zum Inhalt springen

PHP / MySQL Problem


Empfohlene Beiträge

Hallo zusammen,

ich habe ein Problem in Bezug auf PHP und MySQL. Ich bin etwas ratlos, da das Problem bei mir lokal nicht Auftritt ... nur wenn ich mein Script auf meine Internet-Datenbank (die bei Puretec liegt) übertrage. Ich habe eine Seite entworfen mit der eine Filmdatenbank (ich spreche hier von meiner DB!!!) abgefragt werden soll.

Das Ergebnis meiner Abfrage enthält alle Datensätze der Tabelle 'film'. Soweit ist noch alles okay. Bei der Ergebnisverarbeitung wird jeder Datensatz durchlaufen. Dabei werden Spalteninhalte in eine Variable geschrieben. Einige Spalteninhalte werden jedoch zunächst an eine Unterfunktion übergeben ... dort verarbeitet und je nach Übergabe wird ein formatierter HTML-Code zurückgegeben.

Insgesamt werden höchstens pro Datensatz 3 Unterfunktionen durchlaufen. Nach Durchlauf aller Datensätze wird der Variableninhalt mittels ECHO in die Webseite eingetragen.

***

So wie ich es oben beschrieben habe funktioniert das Script bei mir lokal. Im Web habe ich nun folgendes festgestellt. Als ich mein Script ausgeführt hatte wurden mir plötzlich keine Datensätze mehr angezeigt. Also habe ich nach der Fehlerquelle geforscht.

Zunächst konnte ich bestätigen, das nach der Abfrage der DB ein Ergebnis zurückgegeben wurde. Als nächstes habe ich die Ergebnisverarbeitung überprüft (die while - Schleife). Dort habe ich Testweise jeden Datensatz direkt nach Durchlauf mit ECHO ausgegeben. Was ich nun sah hat mich umgeworfen. Nach Durchlauf von ca. 43 meiner 57 Datensätze reisst die Ausgabe ab. Da war ich natürlich total baff. :eek:

Ich habe dann einfach mal die Unterfunktionen eine nach der anderen auskommentiert. Siehe da, mit jeder Unterfunktion die nun nicht mehr durchlaufen wurden, wurden mehr und mehr Datensätze ausgeben. Nun ist meine Vermutung dass das Problem nicht an meinem Script liegt, sondern an der Einstellung der MySQL Datenbank. Ich bin leider, was der administrativen Teil angeht, nicht so fit könnte mir aber vorstellen, das es dort eine Einstellung gibt a la "x Zeit bis das Ergebnis verfällt .. oder der Buffer oder was auch immer" :-))

Vielleicht kann jemand von Euch mir helfen. Liegt der Fehler doch am Script ... oder muss ich mich nun mit dem Support von Puretec rumschlagen?

Vielen Dank im voraus

Gruss Metaner

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi ... (die Zweite) !

Naja, nachdem nun alle Daten futsch sind, und somit mein Beitrag von vorhin auch versuche ich nochmal auf die Antwort von beetFreeQ einzugehen.

Die Idee mit dem Array ist sicherlich ein alternativer Lösungsweg. Ich dachte aber, dass die Rückgabe einer Abfrage ...

$ergebnis = mysql_query($sqlstatment,$verbindung);

... bereits ein Array ist. Es wird zwar in der Regel von einer Ergebniskennung gesprochen, aber durch die Ergebnisverarbeitung durch eine While-Schleife wie z.B. ...

while ($datensatz = mysql_fetch_array($ergebnis))

{

echo $datensatz["Spalte1"];

}

... bin ich immer davon ausgegangen, das $ergebnis ein Array sein muss. Täusche ich mich da? Wäre nett, wenn mir das jemand erläutern kann.

Ansonsten bleibt es merkwürdig, dass das selbe Script bei mir zuhause funktioniert. Also gehe ich immer noch davon aus, das es eine Einstellung dafür geben muss. Oder?

Gruss Metaner

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi,

also das was Du das von der DB zurückbekommst ist eine Art Zeiger. Hat daher auch nichts mit einem Array zu tun. Wenn Du diesen Zeiger mal mit echo() ausgibst dann siehst Du nur eine Zahl.

Dieser Zeiger ist ein Verweis auf die Ergebnisliste in der DB (nein, die wird nicht direkt an das Skript übertragen). d.h. erst wenn Du auf den Zeiger mit fetch_row() oder so zugreifst werden die Daten aus der DB übertragen.

Gruß Markus

Link zu diesem Kommentar
Auf anderen Seiten teilen

Danke Os-T für die Aufklärung :o) ... Nun bin ich wieder ein bischen schlauer. Ist den dieser Zeiger zeitlich beschrängt? Oder hat jemand die selben Erfahrungen gemacht wie ich und hat eine Lösung?

Ich bin leider, was mein Problem angeht, noch nicht weitergekommen. *schnüff*

Gruss Metaner

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi,

wieviel Daten verarbeitest du mit deinen Scripten und der Datenbank?

Auf den Puretec-Servern gelten diese Einschränkungen:

- Prozesse dürfen max. 6 Sekunden Rechenzeit beanspruchen,

wobei diese nach Server-Auslastung berrechnet werden.

- Prozesse dürfen max. 10 Megabyte Speicher belegen

- es dürfen max. 12 Prozesse gleichzeitig laufen

Wobei ich es noch nicht geschafft habe diese Grenzen zu durchbrechen...

Als Test kannst du deine DB sichern und die Datensätze bis auf 1 oder 2 reduzieren. Wenn dein Script dann immer noch nicht läuft, liegt es wohl an deinem Script.

Gruß

Kristof

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Kristof,

ich kann mir auch nicht vorstellen das ich diese Grenzen mit meinem kleinen Script erreicht.

Ich habe eine inhalt.php3 Seiten (von dieser werden die anderen Funktionen aufgerufen), eine config.inc.php3 (beinhaltet Konfigurationsvariablen, Arrays etc.), eine lib.inc.php3 (beinhaltet zentrale Funktionen u.a. auch die Abfrage-Funktion) und zusätzlich noch eine auswertung.php3 (hier sind z.B. die 3 Funktionen hinterlegt, die bei der Auswertung aufgerufen werden)

Alles zusammen sind ca. 10KB gross. Meine Datenbank behinhaltet 8 Tabellen. Die Tabelle die ich in meinem Problemfall abfrage hat 53 Datensätze.

Das ist noch wohl nicht zuviel ... oder? :D Dachte immer, eine Datenbank sollte dazu in der Lage sein. *g* Und so aufwendig sind meine Prozesse nun auch nicht. Schliesslich werden mir die Datensätze schon nach 1-2 Sekunden angezeigt. Somit werden 6 Sekunden auch nicht überschritten.

Problem besteht noch immer. Weitere Lösungen oder Tipps?

Gruss Metaner

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...