SQLite-Probleme

Hallo,

ich möchte für statistische Zwecke Seitenzugriffe mitloggen und schreibe die entsprechenden Daten in eine SQLite-Datenbank. Dies klappt auf anderen Servern auch ganz gut, nur hier bei bplaced gibt es Probleme.
Das Erstellen einer neuen Datenbank ist nicht das Thema, aber sobald die zugehörige Datenbankdatei eine Größe zwischen 3 und 5 kB erreicht (entspricht etwa 5 Seitenaufrufen), geht nichts mehr.
Es klappt mit PHP kein (schreibender) Zugriff mehr.

Gibt es hier irgendwelche Beschränkungen diesbezüglich? Mir ist auch aufgefallen, daß eine Journaldatei zur Datenbank erstellt wird, die es bei meinen anderen (externen) Projekten nicht gibt. Könnte es an dieser liegen?

Hier mal der Code

[code]<?php
$db = sqlite_open($Pfad.“statistik.db”);
//sqlite_query($db,“CREATE TABLE tabelle (id INTEGER PRIMARY KEY,User_Agent TEXT,IP TEXT,Referer TEXT,Seite TEXT,Zeitpunkt INTEGER)”);

$Zeitpunkt = time();

sqlite_query($db, “INSERT INTO tabelle (User_Agent,IP,Referer,Seite,Zeitpunkt)
VALUES (’$_SERVER[HTTP_USER_AGENT]’,’$_SERVER[REMOTE_ADDR]’,’$_SERVER[HTTP_REFERER]’,
’$_SERVER[SERVER_NAME]$_SERVER[REQUEST_URI]’,’$Zeitpunkt’)”);
sqlite_close($db);
?>[/code]

Wie gesagt, läuft auf anderen Servern problemlos.

Im Vorraus schonmal vielen Dank an alle, die eine Idee haben.

fom

Hat keiner ähnliche Probleme (gehabt)?
Oder zumindest eine Idee?
:neutral_face:

Hi, hier genau das gleiche Problem! :neutral_face:

Auslesen und ein Update funktioniert einwandfrei, aber Löschen und Eintragen geht nicht mehr.
Beim Firefox bringt er einfach nur ne weiße Seite und beim Safari folgende Fehlermeldung:
„Der Vorgang konnte nicht abgeschlossen werden. (kCFErrorDomainCFNetwork-Fehler 302.)“

Ebenfalls nur bei bplaced, lokal aufm Webserver läufts perfekt

Ich möchte das Thema nochmal aufgreifen, das weiterhin Probleme mit dem geposteten Code bestehen.

[quote=„fom“]

sqlite_query($db, "INSERT INTO tabelle (User_Agent,IP,Referer,Seite,Zeitpunkt) VALUES ('$_SERVER[HTTP_USER_AGENT]','$_SERVER[REMOTE_ADDR]','$_SERVER[HTTP_REFERER]', '$_SERVER[SERVER_NAME]$_SERVER[REQUEST_URI]','$Zeitpunkt')");[/quote]
Es ist diese Zeile die de m bplaced-Server zu schaffen macht. Es kommt immer ein „bplaced.net Interner Fehler, code 500“. Ich kann keinen Fehler finden und auf anderen Umgebungen läuft dieser DB-Eintrag einwandfrei. :susp:

Need help…

€dit:
Der o.g. Fehler tritt auf, sobald 6 mal erfolgreich(!) in die DB geschrieben wurde. Danach geht nichts mehr.

Ähm soweit ich weiß, kannst du hier nicht einfach so Datenbanken anlegen, wie du lustig bist. Wenn dies nicht das Problem ist, sieh diesen Post als unnütz an :wink:!

[ol]
[li] In meinem Paket sind 2 MySQL-Datenbanken enthalten. Diese kann ich nutzen.[/li]
[li] Wie du den Postings entnehmen kannst, geht es um SQLite. Ein Pseudo-DBMS auf Textdateibasis, welches auf bplaced ebenfalls offiziell angeboten wird und (nach meiner Kenntnis) keiner weiteren (für meine Zwecke) relevanten Restriktion unterliegt.[/li][/ol]

Mache ich …

Mmh, ok, kenne SQLite nicht, daher wohl mein falsches Denken.
Nun jedoch wieder zurück zum eigentlichen Problem. Haste mal geguckt, dass deine Variablen, die du ins INSERT reinwirfst auch alle korrekt sind? Würde jedes mal mit nem einfachem Echo nachgucken.

Ich wusste nicht mal das nen PHP Script nen 500 verursachen kann :smiley:
Ist zwar nicht das Problem… aber solltest du dennoch machen, da man es generell machen sollte.
Statt:sqlite_query($db, "INSERT INTO tabelle (User_Agent,IP,Referer,Seite,Zeitpunkt) VALUES ('$_SERVER[HTTP_USER_AGENT]','$_SERVER[REMOTE_ADDR]','$_SERVER[HTTP_REFERER]', '$_SERVER[SERVER_NAME]$_SERVER[REQUEST_URI]','$Zeitpunkt')");Wäre:sqlite_query($db, "INSERT INTO `tabelle` (`User_Agent`,`IP`,`Referer`,`Seite`,`Zeitpunkt`) VALUES ('$_SERVER[HTTP_USER_AGENT]','$_SERVER[REMOTE_ADDR]','$_SERVER[HTTP_REFERER]', '$_SERVER[SERVER_NAME]$_SERVER[REQUEST_URI]','$Zeitpunkt')");besser da, es passieren kann das ein Tabellenname oder Feldname genauso heißt wie etwas bekanntes in SQLite (bei allen anderen DB’s gilt das selbe) und er daher nicht das gewünschte Ergebnis bringt. (btw… geht bei deinem Code nicht sogar SQL Injection :smiley:?)

[quote]Ein Pseudo-DBMS auf Textdateibasis[/quote]Was bitte redest du da? Zum einen werden nicht mehrere Textdateien angelegt sondern nur eine Datenbank Datei (MySQL nutzt sogar viele viele Dateien für alles mögliche) Auch ist SQLite nichts anderes wie jede andere Datenbank. Der Vorteil besteht eben das man keinen DB Server dafür braucht sondern es einfach so geht. Nachteil eventuell das nichts gecached wird daher die Abfragen eventuell länger dauern können (als obs in der Heutigen Zeit nen unterschied gäbe :smiley:) dafür aber aktueller sind. (das SQLite keinen cache hat, ist nur eine Vermutung…)