Wieviel Speicher für PHP?

AnPa
Beiträge: 6
Registriert: Mi 6. Jul 2005, 08:42
Wohnort: Lübeck
Kontaktdaten:

Beitrag von AnPa »

Hallo.
Habe mal ein Dump erstellt,
kannst du dir hier Runterladen
http://www.anpa-networks.de/contenido_dump.sql

Habe nämlich das selbe Problem :)
Im Dump befindet sich con und con1... Haben beide den selben Fehler!
Habe schon auf 64 MB hochgesetzt, also am speicher liegts nicht :)

Ps: lade in ca. 5 min hoch!
MfG
AnPa :-D
emergence
Beiträge: 10653
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Beitrag von emergence »

erstmal danke für den dump
fehler ist damit reproduzierbar...
zum testen verwende ich momentan ne 4.4.5
*** make your own tools (wishlist :: thx)
AnPa
Beiträge: 6
Registriert: Mi 6. Jul 2005, 08:42
Wohnort: Lübeck
Kontaktdaten:

Beitrag von AnPa »

Ich benutze auch 4.4.5.
Habe anfangs das System mit den Beispielen installiert, sobald ich eine eigene Kategorie anlegen wollte, waren plötzlich alle weg und ich konnte auch keine eigene mehr anlegen.

Habe mich dann entschlossen, alles runterzuwerfen und nur mit modulen zu installieren, was dann den jetzigen fehler ausmachte :)

PS: Hatte ne zeit lang ein Mysql Problem mit lock tables, da das nicht freigegeben war! Habe das nun manuel freigegeben in mysql. aber daran lags wohl auch nicht??
MfG
AnPa :-D
emergence
Beiträge: 10653
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Beitrag von emergence »

ist ja intressant

in der con_cat gibts folgenden eintrag
idcat, idclient, parentid, preid, postid, status, author, created, lastmodified
0,1,0,0,0,0,,01.01.0001,01.01.0001

zusätzlich in der con_cat_lang
idcatlang, idcat, idlang, idtplcfg, name, visible, public, status, author, created, lastmodified
0,0,1,0,Hauptmenü,0,1,0,,01.01.0001,01.01.0001

hab mal das getestet -> http://contenido.org/forum/viewtopic.php?p=39083#39083

endlosschleife tritt damit nicht mehr auf...
jedoch eine verdoppelung der neu angelegten kategorie
ein weiteres anlegen weiterer unterkategorien ist dann ebenso nicht mehr möglich...

lösche ich beide zeilen in den beiden tabellen
funktioniert alles wie es soll...
*** make your own tools (wishlist :: thx)
AnPa
Beiträge: 6
Registriert: Mi 6. Jul 2005, 08:42
Wohnort: Lübeck
Kontaktdaten:

Beitrag von AnPa »

Also sollte ich die mal löschen? :) Mach ich jetzt mal einfach...
MfG
AnPa :-D
AnPa
Beiträge: 6
Registriert: Mi 6. Jul 2005, 08:42
Wohnort: Lübeck
Kontaktdaten:

Beitrag von AnPa »

Geht immer noch nicht.. Sobald ich auf "Neuen Baum Anlegen" klicke, kommt Fatal error: Allowed memory size of 67108864 bytes exhausted (tried to allocate 15603 bytes) in /srv/www/htdocs/web1/html/contenido/contenido/includes/functions.str.php on line 207

EDIT

Habe den falschen gelöscht.. hab schon so viele drinne :)
Aber habe jetzt den Richtigen gelöscht, und sobald ich einen Namen eingebe zum anlegen kommt danach wieder fatal error, siehe oben.
und der Eintrag in der DB ist wieder der selbe !
MfG
AnPa :-D
emergence
Beiträge: 10653
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Beitrag von emergence »

hmm... zum testen (mach vorher noch ein backup)

leere beide tabellen mal komplett (con_cat & con_cat_lang)#
abmelden, anmelden -> nochmals versuchen eine kategorie anzulegen...

check noch ob du das recht lock table auf wirklich bei der db hast...
*** make your own tools (wishlist :: thx)
AnPa
Beiträge: 6
Registriert: Mi 6. Jul 2005, 08:42
Wohnort: Lübeck
Kontaktdaten:

Beitrag von AnPa »

Kann das sein das es echt an den lock table lag?
Habe mir jetzt einen eigenen mysql user angelegt, der alles darf...
Weil confixx die rechte überschrieben hat, glaub ich. nun scheint es zugehen ?
MfG
AnPa :-D
emergence
Beiträge: 10653
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Beitrag von emergence »

ich tippe einfach mal darauf das bei einem fehlenden lock table recht diese beiden fehlerhaften einträge erzeugt werden...

zusätzlich kommt das mit dem an und abmelden dazu...
der angezeigte baum wird in der session gespeichert...

ich muss da noch ein wenig überlegen...

tendiere aber dazu das beim neu auslesen der einzelnen kategorien
zuerst alle einträge mit idcat 0 gelöscht werden
zusätzlich zu berücksichtigen das idcat 0 werte nicht mit selektiert werden...

ich hab jetzt mal den zweiten schritt eingebaut und getestet zu einer verdoppelung kommt es dann nicht mehr...
beim erstmaligen anlegen einer neuen kategorie wird dennoch der erste fehlerhafte eintrag mit idcat 0 angezeigt...
*** make your own tools (wishlist :: thx)
emergence
Beiträge: 10653
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Beitrag von emergence »

also mein fix würde so aussehen:

functions.str.php

die beiden funktionen strOrderedPostTreeList, strRemakeTreeTable werden durch folgendes ersetzt...

Code: Alles auswählen

function strOrderedPostTreeList ($idcat, $poststring) {
        global $db;
        global $client;
        global $lang;
        global $cfg;

        $sql = "SELECT idcat FROM ".$cfg["tab"]["cat"]." WHERE parentid=0 AND preid='$idcat' AND idcat!=0";

        $db->query($sql);
        if ( $db->next_record() ) {
                $tmp_idcat = $db->f("idcat");
                $poststring = $poststring.",".$tmp_idcat;
                $poststring = strOrderedPostTreeList($tmp_idcat, $poststring);
        }

        return $poststring;

}

function strRemakeTreeTable() {
        global $db;
        global $client;
        global $lang;
        global $cfg;
		// Flag to rebuild the category table
		global $remakeCatTable;
		global $remakeStrTable;
		$remakeCatTable = true;
		$remakeStrTable = true;

        $poststring = "";

        $sql = "DELETE FROM ".$cfg["tab"]["cat_tree"];                    // empty 'cat_tree'-table
        $db->query($sql);

        $sql = "DELETE FROM ".$cfg["tab"]["cat"]." WHERE idcat='0'";
        $db->query($sql);

        $sql = "DELETE FROM ".$cfg["tab"]["cat_lang"]." WHERE idcat='0'";
        $db->query($sql);

        $sql = "SELECT idcat FROM ".$cfg["tab"]["cat"]." WHERE parentid='0' AND preid='0' AND idcat!='0'";

        $db->query($sql);
        while($db->next_record())
        {
                $idcats[] = $db->f("idcat");
        }

        if (is_array($idcats)) {
                foreach ($idcats as $value) {
                        $poststring = $poststring.$value.strOrderedPostTreeList ($value, "").",";
                }
        }
        $poststring=ereg_replace(",$","", $poststring);
        $a_maincats = explode(",", $poststring);
        if (is_array($a_maincats)){
                foreach ($a_maincats as $tmp_idcat) {
                        strRemakeTreeTableFindNext($tmp_idcat,0);
                }
        }
}
hab das jetzt nochmals mit deinem orginal dump getestet
die beiden fehlerhaften einträge werden gelöscht
und die neue kategorie wird korrekt ohne verdoppelung angelegt...
*** make your own tools (wishlist :: thx)
emergence
Beiträge: 10653
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Beitrag von emergence »

@timo

die andere sache in der selben datei
-> warum es zu den fehlerhaften einträgen kommt

strNewTree und strNewCategory

die neue id wird mittels

Code: Alles auswählen

$tmp_newid = $db->nextid($cfg["tab"]["cat"]);
angefordert...

sollte nun das recht lock table nicht vergeben sein wird der wert auf 0 gesetzt...

tja und somit kommt zu den fehlerhaften einträgen...

anders könnte ich es mir nicht erklären...
Zuletzt geändert von emergence am Mi 6. Jul 2005, 10:45, insgesamt 1-mal geändert.
*** make your own tools (wishlist :: thx)
AnPa
Beiträge: 6
Registriert: Mi 6. Jul 2005, 08:42
Wohnort: Lübeck
Kontaktdaten:

Beitrag von AnPa »

Also mir ist schon sehr geholfen :) Vielen Dank sag ich da mal ...
Bei mir scheint jetzt alles zu gehen! Dann kann ich wohl den Wert von 64 MB Speicher wieder runterdrehen :)

Wünsche noch einen Schönen Tag!

PS: Gibt es irgendwo ein "lern how to" wie man mit Contenido umgeht? Also designs erstellen, template usw.???
MfG
AnPa :-D
emergence
Beiträge: 10653
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Beitrag von emergence »

hmm hab jetzt noch ein wenig überlegt

die beiden funktionen führen ja keinerlei tätigkeit aus wenn kein kategoriename angegeben wurde...

ich hab mir jetzt einfach gedacht ich verknüpf das mit der überprüfung ob die neu angeforderte idcat nicht auch 0 ist

Code: Alles auswählen

        $tmp_newid = $db->nextid($cfg["tab"]["cat"]);
setzt man dann einfach vor

Code: Alles auswählen

        if ($catname == "")
        {
            return;
        }
das durch folgendes ersetzt wird

Code: Alles auswählen

        if ($catname == "" || $tmp_newid == 0)
        {
            return;
        }
*** make your own tools (wishlist :: thx)
emergence
Beiträge: 10653
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Beitrag von emergence »

nur zur info

-> http://www.contenido.org/forum/viewtopi ... 1062#51062
ist der temporäre fix den man nur anwenden sollte wenn man eine endlos schleife erhält...
man sollte anschließend bei einer 4.4.5 dafür sorgen dass das recht lock table vergeben wird.
an sich halte ich es sonst für nicht notwendig diesen teil in den cvs_head zu übernehmen...

der eigentliche fix
-> http://www.contenido.org/forum/viewtopi ... 1068#51068
damit es nicht zu den fehlerhaften einträgen kommen kann, sollte auf jeden fall in den cvs head... (sollte genügen)
*** make your own tools (wishlist :: thx)
sengercarhifi.de
Beiträge: 2
Registriert: Do 11. Aug 2005, 19:31
Kontaktdaten:

Beitrag von sengercarhifi.de »

hi, ihr seit echt genial. ich hatte dieses verdammte problem auch und wollte die ganze software in meinen papierkorb treten.

Ich frage mich nur, warum die von Contenido das Problem nicht auch haben und selbst eine Lösung veröffentlichen. naja hauptsache es gibt wenigstens ein paar geniale leute auf der welt.


man sieht sich und weiter so

gruß Jens
(am Montag den 15. Aug. 2005 startet hoffentlich jetzt endlich meine homepage mit onlineshop [genug eigenwerbung])
Gesperrt