| Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
| Autor |
Nachricht |
gmb2007 Neuer User
Anmeldungsdatum: 04.06.2007 Beiträge: 4
|
04.06.2007 11:11 PEAR Lite - Unsauberes Löschen von CacheGruppen? |
|
|
Hallo,
wir benutzen CacheLite in einem grossen OnlineShop mit mehrern Cache-Gruppen.
PHP Version: 4.4.3 / Linux / CacheLite 1.7.2.
Wir haben folgendes Verhalten beobachtet: Unter bestimmten Umständen, scheint CacheLite, trotz eigentlich gültigem Cacheeintrag ein false zurück zu geben. Wir vermuten, dass das auftritt, wenn eine !!ANDERE!! Cachegruppe geflusht wird. Bei der Fehlersuche bin ich über folgende Codestelle gestolpert, die ich als ein wenig kritisch erachte.
Lite.php, _cleanDir Methode, Zeile 593 folgende:
[...]
case 'notingrou':
// START
if (!strpos($file2, $motif, 0)) {
// END
$result = ($result and ($this->_unlink($file2)));
}
break;
case 'callback_':
$func = substr($mode, 9, strlen($mode) - 9);
if ($func($file2, $group)) {
$result = ($result and ($this->_unlink($file2)));
}
break;
case 'ingroup':
default:
// START
if (strpos($file2, $motif, 0)) {
// END
$result = ($result and ($this->_unlink($file2)));
}
break;
[...]
Eventuell wird hier zuviel gelöscht => implizite Typkonvertierung
=> http://de.php.net/manual/de/function.strpos.php
Hat einer schonmal ein ähnliches Verhalten beobachtet oder ne sonstige gute Idee?
Danke und Grüsse
Bjoern |
|
| Nach oben |
|
 |
Berdir Power User
Anmeldungsdatum: 22.09.2005 Beiträge: 1347
|
04.06.2007 15:04 |
|
|
Ich hatte das Problem bei mir noch nicht, vermutlich wäre es mir aber auch nicht aufgefallen.
Ich weiss nicht sicher, ob der dritte Parameter "0" irgend ein Hack ist um dieses Verhalten zu unterdrücken, aber es kann auch ein Bug sein. Am besten erstellst du einen Bug-Report, dann kann sich der Entwickler die Sache anschauen
http://pear.php.net/bugs/report.php?package=Cache_Lite |
|
| Nach oben |
|
 |
gmb2007 Neuer User
Anmeldungsdatum: 04.06.2007 Beiträge: 4
|
05.06.2007 6:56 |
|
|
Hi,
hab einen Bug-Report gemacht.
Dritter Parameter bei strpos() ist der Offset, ab welchem begonnen werden soll, den String zu suchen.
Grüsse
Bjoern |
|
| Nach oben |
|
 |
Berdir Power User
Anmeldungsdatum: 22.09.2005 Beiträge: 1347
|
05.06.2007 14:10 |
|
|
Ich kann das Problem bei mir nicht nachvollziehen:
| Code: |
- Cache anlegen mit id test1 in Gruppe test1
- Cache anlegen mit id test2 in Gruppe test2
- Beide sind vorhanden
- Cache-Gruppe test1 löschen
- test1 ist nicht mehr vorhanden, test2 ist vorhanden
- Kompletter Cache löschen
- Beide sind nicht mehr vorhanden
|
Kannst du ein ähnliches Beispiel erstellen bei dem es nicht wie gewünscht funktioniert? Möglichst einfach.. |
|
| Nach oben |
|
 |
gmb2007 Neuer User
Anmeldungsdatum: 04.06.2007 Beiträge: 4
|
05.06.2007 14:14 |
|
|
Ja, wie gesagt, es kann auch ne race-condition sein...
Lässt sich nicht leicht nachbilden, evtl. ist es auch ein Problem, weil eine andere Komponente spinnt (Hardware, OS, ...).
Versuche nur, gewissen Sachen auszuschliessen und Erfahrungen, anderer zu erfahren.
Danke mal soweit!
Grüsse
Bjoern |
|
| Nach oben |
|
 |
Berdir Power User
Anmeldungsdatum: 22.09.2005 Beiträge: 1347
|
05.06.2007 14:25 |
|
|
Ja, du hast halt im ersten Post gesagt das du so etwas vermutest, bei mir hat das aber fehlerfrei geklappt.
Wenn du ein solches einfaches Beispiel erstellen kannst, bei dem es einen Fehler gibt ist die Chance halt deutlich höher, das es gefixt wird, ein nicht reproduzierbarer Fehler ist praktisch nicht korrigierbar. |
|
| Nach oben |
|
 |
gmb2007 Neuer User
Anmeldungsdatum: 04.06.2007 Beiträge: 4
|
05.06.2007 14:34 |
|
|
Das Problem ist, dass sich da kein einfaches Beispiel erstellen lässt...
Naja, primäres Ziel wie gesagt, ist ein Einschätzung der Code-Stelle... |
|
| Nach oben |
|
 |
|
|