Session: freeze() failed & Duplicate entry
Session: freeze() failed & Duplicate entry
Folgend Fehlermeldungen treten sporadisch auf:
[30-May-2006 14:41:46] /cms/cms/front_content.php?idcatart=4&lang=1&client=1 Session: freeze() failed.
[30-May-2006 18:57:35] /cms/cms/front_content.php?idcatart=4&lang=1&client=1 MySQL error 1062: Duplicate entry 'bff08dee6542e49ace4d01271b560c4a' for key 1
insert into con_phplib_active_sessions ( sid, name, val, changed ) values ('bff08dee6542e49ace4d01271b560c4a', 'sid_1_1', '- sehr langer string -', '20060530185734')
Die Folge des ganzen - Ladezeiten wie zu Omas Zeiten.
Die Fehlermeldung scheint aber nur dann aufzutreten, wenn Artikel geändert wurden.
Betrifft auch nicht die Artikel, die geändert wurden, sondern irgendwelche.
Laut Fehlermeldung oben, scheint es Probleme bei idcatart=4 zu geben.
Dieser Artikel wurde aber def. nicht geändert.
Der Session: freeze() Fehler scheint ja nicht das Problem zu sein, soweit die Meinungen im Forum.
Hab aber keine Threads gefunden, bei denen freeze() und sql Fehler gemeinsam auftauchen.
Danke für Hinweise und Tipps.
[30-May-2006 14:41:46] /cms/cms/front_content.php?idcatart=4&lang=1&client=1 Session: freeze() failed.
[30-May-2006 18:57:35] /cms/cms/front_content.php?idcatart=4&lang=1&client=1 MySQL error 1062: Duplicate entry 'bff08dee6542e49ace4d01271b560c4a' for key 1
insert into con_phplib_active_sessions ( sid, name, val, changed ) values ('bff08dee6542e49ace4d01271b560c4a', 'sid_1_1', '- sehr langer string -', '20060530185734')
Die Folge des ganzen - Ladezeiten wie zu Omas Zeiten.
Die Fehlermeldung scheint aber nur dann aufzutreten, wenn Artikel geändert wurden.
Betrifft auch nicht die Artikel, die geändert wurden, sondern irgendwelche.
Laut Fehlermeldung oben, scheint es Probleme bei idcatart=4 zu geben.
Dieser Artikel wurde aber def. nicht geändert.
Der Session: freeze() Fehler scheint ja nicht das Problem zu sein, soweit die Meinungen im Forum.
Hab aber keine Threads gefunden, bei denen freeze() und sql Fehler gemeinsam auftauchen.
Danke für Hinweise und Tipps.
dafür gibts leider keine lösung...
konnte man bis jetzt noch nie nachvollziehen warum und wieso...
dass das system dadurch langsam wird, ist mir in der beziehung aber auch noch nicht aufgefallen..
konnte man bis jetzt noch nie nachvollziehen warum und wieso...
dass das system dadurch langsam wird, ist mir in der beziehung aber auch noch nicht aufgefallen..
*** make your own tools (wishlist :: thx)
-
- Beiträge: 298
- Registriert: Di 16. Nov 2004, 15:43
- Wohnort: Arnstadt / Thüringen
- Kontaktdaten:
Ok, vielleicht interessiert es ja jemanden.
/conlib/ct_sql.inc öffnen und folgende Funktion
durch diese
ersetzen.
Bisher tauchte bei mir keine Session Freeze Failed Meldung mehr im Log auf. Vielleicht kann das jemand testen.
LG,
Christian
/conlib/ct_sql.inc öffnen und folgende Funktion
Code: Alles auswählen
function ac_store($id, $name, $str) {
$ret = true;
switch ( $this->encoding_mode ) {
case "slashes":
$str = addslashes($name . ":" . $str);
break;
case "base64":
default:
$str = base64_encode($name . ":" . $str);
};
$name = addslashes($name);
## update duration of visit
global $HTTP_REFERER, $HTTP_USER_AGENT, $REMOTE_ADDR;
$now = date("YmdHis", time());
$uquery = sprintf("update %s set val='%s', changed='%s' where sid='%s' and name='%s'",
$this->database_table,
$str,
$now,
$id,
$name);
$squery = sprintf("select count(*) from %s where val='%s' and changed='%s' and sid='%s' and name='%s'",
$this->database_table,
$str,
$now,
$id,
$name);
$iquery = sprintf("insert into %s ( sid, name, val, changed ) values ('%s', '%s', '%s', '%s')",
$this->database_table,
$id,
$name,
$str,
$now);
$this->db->query($uquery);
# FIRST test to see if any rows were affected.
# Zero rows affected could mean either there were no matching rows
# whatsoever, OR that the update statement did match a row but made
# no changes to the table data (i.e. UPDATE tbl SET col = 'x', when
# "col" is _already_ set to 'x') so then,
# SECOND, query(SELECT...) on the sid to determine if the row is in
# fact there,
# THIRD, verify that there is at least one row present, and if there
# is not, then
# FOURTH, insert the row as we've determined that it does not exist.
if ( $this->db->affected_rows() == 0
&& $this->db->query($squery)
&& $this->db->next_record() && $this->db->f(0) == 0
&& !$this->db->query($iquery)) {
$ret = false;
}
return $ret;
}
Code: Alles auswählen
function ac_store($id, $name, $str)
{
$ret = true;
switch ($this->encoding_mode)
{
case "slashes":
$str = addslashes($name . ":" . $str);
break;
case "base64":
default:
$str = base64_encode($name . ":" . $str);
}
$name = addslashes($name);
global $HTTP_REFERER, $HTTP_USER_AGENT, $REMOTE_ADDR;
$now = date("YmdHis", time());
$iquery = sprintf("replace into %s ( sid, name, val, changed ) values ('%s', '%s', '%s', '%s')",
$this->database_table,
$id,
$name,
$str,
$now);
if (!$this->db->query($iquery)) $ret = false;
return $ret;
}
Bisher tauchte bei mir keine Session Freeze Failed Meldung mehr im Log auf. Vielleicht kann das jemand testen.
LG,
Christian
-
- Beiträge: 124
- Registriert: Do 14. Jul 2005, 22:37
- Kontaktdaten:
Schön, vor allem, da die Stelle eingegrenzt wurde. Nochmal näher ansehen...
Verschoben.
Gruß
HerrB
Verschoben.
Gruß
HerrB
Bitte keine unaufgeforderten PMs oder E-Mails -> use da Forum!
Newsletter: V4.4.x | V4.6.0-15 (Module, Backend) | V4.6.22+
Standardartikelliste: V4.4.x | V4.6.x
http://www.contenido.org/forum/search.php | http://faq.contenido.org | http://www.communido.net
Newsletter: V4.4.x | V4.6.0-15 (Module, Backend) | V4.6.22+
Standardartikelliste: V4.4.x | V4.6.x
http://www.contenido.org/forum/search.php | http://faq.contenido.org | http://www.communido.net
intressanter ansatz...
hab etwas gesucht und das hier gefunden
http://home.fnal.gov/~dbox/SQL_API_Portability.html
einen verdacht warum das eigentlich manchmal zustande kommen kann hab ich ja mittlerweile... (tritt an sich ja nur im backend auf)
mögliche ursache -> wenn innerhalb eines framesets zur selben zeit der gleiche code ausgeführt wird...
folgende code änderung könnte auch funktionieren (sperren der tabelle beim updaten):
das ist jetzt aber nicht getestet...
hab etwas gesucht und das hier gefunden
http://home.fnal.gov/~dbox/SQL_API_Portability.html
hmm...replace into foo values ( 'bar',1);
completely non portable. Use delete/insert or update as appropriate.
einen verdacht warum das eigentlich manchmal zustande kommen kann hab ich ja mittlerweile... (tritt an sich ja nur im backend auf)
mögliche ursache -> wenn innerhalb eines framesets zur selben zeit der gleiche code ausgeführt wird...
folgende code änderung könnte auch funktionieren (sperren der tabelle beim updaten):
Code: Alles auswählen
function ac_store($id, $name, $str) {
$ret = true;
switch ( $this->encoding_mode ) {
case "slashes":
$str = addslashes($name . ":" . $str);
break;
case "base64":
default:
$str = base64_encode($name . ":" . $str);
};
$name = addslashes($name);
## update duration of visit
global $HTTP_REFERER, $HTTP_USER_AGENT, $REMOTE_ADDR;
$now = date("YmdHis", time());
$uquery = sprintf("update %s set val='%s', changed='%s' where sid='%s' and name='%s'",
$this->database_table,
$str,
$now,
$id,
$name);
$squery = sprintf("select count(*) from %s where val='%s' and changed='%s' and sid='%s' and name='%s'",
$this->database_table,
$str,
$now,
$id,
$name);
$iquery = sprintf("insert into %s ( sid, name, val, changed ) values ('%s', '%s', '%s', '%s')",
$this->database_table,
$id,
$name,
$str,
$now);
$this->db->lock($this->database_table);
$this->db->query($uquery);
# FIRST test to see if any rows were affected.
# Zero rows affected could mean either there were no matching rows
# whatsoever, OR that the update statement did match a row but made
# no changes to the table data (i.e. UPDATE tbl SET col = 'x', when
# "col" is _already_ set to 'x') so then,
# SECOND, query(SELECT...) on the sid to determine if the row is in
# fact there,
# THIRD, verify that there is at least one row present, and if there
# is not, then
# FOURTH, insert the row as we've determined that it does not exist.
if ( $this->db->affected_rows() == 0
&& $this->db->query($squery)
&& $this->db->next_record() && $this->db->f(0) == 0
&& !$this->db->query($iquery)) {
$ret = false;
}
$this->db->unlock();
return $ret;
}
*** make your own tools (wishlist :: thx)
-
- Beiträge: 298
- Registriert: Di 16. Nov 2004, 15:43
- Wohnort: Arnstadt / Thüringen
- Kontaktdaten:
Moin Contenido-Team,
ich bin jetzt endlich dazu gekommen, die 4.6.15er Version auszuprobieren. Dabei ist mir aufgefallen, dass das Session Freeze Problem immer noch auftritt (bei mir bereits nach 3min Backend-Wurschtelei).
Wäre schön, wenn Ihr eine/n Workaround/Lösung in die nächste Version einbaut. Einen Lösungsvorschlag habe ich bereits weiter oben gepostet.
Danke Euch.
LG,
Christian
ich bin jetzt endlich dazu gekommen, die 4.6.15er Version auszuprobieren. Dabei ist mir aufgefallen, dass das Session Freeze Problem immer noch auftritt (bei mir bereits nach 3min Backend-Wurschtelei).
Wäre schön, wenn Ihr eine/n Workaround/Lösung in die nächste Version einbaut. Einen Lösungsvorschlag habe ich bereits weiter oben gepostet.
Danke Euch.
LG,
Christian
Ja, da dieser Thread offen ist, wurde es noch nicht eingebaut.
Gruß
HerrB
Gruß
HerrB
Bitte keine unaufgeforderten PMs oder E-Mails -> use da Forum!
Newsletter: V4.4.x | V4.6.0-15 (Module, Backend) | V4.6.22+
Standardartikelliste: V4.4.x | V4.6.x
http://www.contenido.org/forum/search.php | http://faq.contenido.org | http://www.communido.net
Newsletter: V4.4.x | V4.6.0-15 (Module, Backend) | V4.6.22+
Standardartikelliste: V4.4.x | V4.6.x
http://www.contenido.org/forum/search.php | http://faq.contenido.org | http://www.communido.net
Ich poste es mal zum Überprüfen ob sich damit der Fehler reproduzieren läßt.emergence hat geschrieben:dafür gibts leider keine lösung...
konnte man bis jetzt noch nie nachvollziehen warum und wieso...
Ich hatte diesen Fehler (wie in Posting #1) seit ewigen Zeiten nicht mehr.
Dann habe ich ein Bild über die Dateiverwaltung hochgeladen.
Bildname: kuezel_bildname_x
das Bild lag im Unterverzeichnis upload/w
Und im Unterverzeichnis upload/c lag ein anders Bild mit exakt dem gleichen Namen.
Bilder wurden im Artikel richtig angezeigt, aber der Fehler war da.
Erst als ich das Bild im Verzeichnis w gelöscht und mit einem anderen Namen neu hochgeladen hatte war der Fehler weg.
Zufall ???
-
- Beiträge: 503
- Registriert: Do 6. Apr 2006, 01:40
- Kontaktdaten:
Zunächst Fix von emergence eingebaut.
Gruß
HerrB
Gruß
HerrB
Bitte keine unaufgeforderten PMs oder E-Mails -> use da Forum!
Newsletter: V4.4.x | V4.6.0-15 (Module, Backend) | V4.6.22+
Standardartikelliste: V4.4.x | V4.6.x
http://www.contenido.org/forum/search.php | http://faq.contenido.org | http://www.communido.net
Newsletter: V4.4.x | V4.6.0-15 (Module, Backend) | V4.6.22+
Standardartikelliste: V4.4.x | V4.6.x
http://www.contenido.org/forum/search.php | http://faq.contenido.org | http://www.communido.net