PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks. |
 |

28-12-2010, 15:17
|
Ghostrider28
Registrierter Benutzer
|
|
Registriert seit: May 2010
Beiträge: 111
|
|
Internal Server Error bei einer SQL Abfrage
Moin,
sollte dieser Beitrag im SQL Forum besser aufgehoben sein, so bitte ich um Verschiebung. Da ich leider nicht weiss, ob es bei oben genanntem Fehler um einen Fehler in der Abfrage handelt oder um einen Fehler, der durch den PHP Interpreter ausgelöst wird, poste ich zunächst hier.
Folgende SQL Abfrage ist Quell des Übels:
Code:
$sql = "SELECT * FROM `tabelle` WHERE `servertime` BETWEEN '$datum2' AND '$datum' AND `field_2` = 'A' AND `field_1` = '$tracking'";
Ein mysql_num_rows gibt mir aus, dass ca. 30.000 Datensätze ermittelt wurden. Darauf folgt ein 500 er Internal Server Error.
Verwende ich ein kleineres Datumsinterval (bei dem 30.000 Datensätze Beispiel ist es eine Woche) klappt das Ganze einwandfrei.
Ich weiss nicht mal, in welche Richtung ich ermitteln soll -.-
Hat jemand eine Idee?
Viele Dank im Voraus
|

28-12-2010, 15:19
|
wahsaga
 Moderator
|
|
Registriert seit: Sep 2001
Beiträge: 25.236
|
|
Wie wär's denn erst mal mit einem Blick ins Error-Log des Servers ...?
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
|

28-12-2010, 15:20
|
Ghostrider28
Registrierter Benutzer
|
|
Registriert seit: May 2010
Beiträge: 111
|
|
Würde 1und1 den Error Log führen...
Dort habe ich schon angerufen, Traffic Log, Mail Log usw. gibbet alles, nur keinen Error Log.
|

28-12-2010, 16:22
|
unset
 Moderator
|
|
Registriert seit: Jan 2007
Ort: Düsseldorf
Beiträge: 3.782
|
|
Ein Error-log fuhren die mit Sicherheit, vermutlich darfst du schlicht und egreifend nicht drauf zugreifen. Bitte also um einen Auszug oder Wechsel den hoster. Alles weitere ist reines rumgerate.
|

28-12-2010, 16:27
|
AmicaNoctis
 Moderatorin
|
|
Registriert seit: Jul 2009
Beiträge: 5.709
|
|
Hallo,
ein 500er kommt bei manchen Hostern, wenn der zugewiesene Arbeitsspeicher überschritten wird. Wenn du die Datensätze irgendwie alle in ein Array wirfst, um nachträglich noch irgendwas damit zu machen (sortieren, gruppieren, ...), könnte es daran liegen. Wenn du sie dagegen Datensatz für Datensatz ausliest und direkt ausgibst, könnte es funktionieren. Das kannst du ja mal testen.
Falls es daran liegt, bleibt dir im Grunde also nur die Optimierung des Scripts hinsichtlich Speicherbedarf, wenn du die Datenmenge nicht begrenzen oder den Hoster wechseln willst.
Gruß,
Amica
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt? 
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke! 
|

28-12-2010, 16:58
|
Ghostrider28
Registrierter Benutzer
|
|
Registriert seit: May 2010
Beiträge: 111
|
|
Um einen Auszug des Error Logs habe ich bereits gebeten, leider ist die Antwort sehr konsequent, sie lautet Nein. Dabei habe ich erst von Strato zu 1und1 gewechselt, weil es bei strato noch andere Dinge gab, die mir nicht gefielen. Daher werde ich mal Amicas Rat folgen und mal in Richtung Speicherbedarf ermitteln.
Während ich dies nun schreibe, habe ich das Statement mal verändert-
Statt SELECT * ....
nun
SELECT servertime, field_1, field_2, field_3, field_4 ...
Nun taucht der 500 erst auf, wenn ich eine Anzahl von Datensätze im Bereich 40.000 selecte. Wunderbar ;-) Nun mache ich mich daran, das ganze eine wenig zu optimieren.
|

28-12-2010, 16:59
|
h3ll
Registrierter Benutzer
|
|
Registriert seit: Mar 2008
Beiträge: 3.611
|
|
Willst du wirklich mehr als 40000 Datensätze gleichzeitig ausgeben?
|

28-12-2010, 17:02
|
Ghostrider28
Registrierter Benutzer
|
|
Registriert seit: May 2010
Beiträge: 111
|
|
Ja, es geht um Koordinaten, die auf eine Karte geplottet werden, da können es durchaus um die 40-50k Datensätze werden.
|

28-12-2010, 17:37
|
AmicaNoctis
 Moderatorin
|
|
Registriert seit: Jul 2009
Beiträge: 5.709
|
|
Da kann man aber auch mit AJAX arbeiten, um diese Spots nachzuladen. Da machst du halt mehrere Hintergrund-Requests mit kleineren Datenmengen.
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt? 
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke! 
|

29-12-2010, 11:02
|
Ghostrider28
Registrierter Benutzer
|
|
Registriert seit: May 2010
Beiträge: 111
|
|
Hm, das wäre Neuland für mich, da muss ich mich erstmal reinfrickeln.
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
Themen-Optionen |
|
Thema bewerten |
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
|
PHP News
|