Zitat von
Spooky
Nein, weiß ich leider nicht
.
Danke jedenfalls für den Denkanstoß, ich habe nun eine Möglichkeit implementiert.
Ich habe aber noch ein kleines Problem, welches mir gerade auf meinem Remote-System aufgefallen ist.
Wenn ich mein Bundle auf einem lokalen System von mir teste (WSL2), dann funktioniert mein Caching-System ohne Probleme.
In meinem Remote-System (Gleiche Contao-Version, ähnlich leere Installation) funktioniert es leider nicht.
Mein Code für mein Caching:
PHP-Code:
...
public function createCacheKey(): bool
{
$this->requestDatabaseHandler->createRequestCheck();
$this->requestDatabaseHandler->setRequestRunning(true);
$cache = new FilesystemAdapter();
$result = $cache->getItem($this->cacheKey);
$result->expiresAfter($this->cacheTtl);
if (!($domainResults = $this->getDomainResults->getDomainResults())) {
$result->set('error');
$cache->save($result);
$this->requestDatabaseHandler->setRequestRunning(false);
return false;
}
$result->set($domainResults);
$cache->save($result);
$this->requestDatabaseHandler->setRequestRunning(false);
return true;
}
...
So sieht es im Service aus. Dieser Service wird von einem Command/Cronjob immer wieder ausgeführt.
Im Controller versuche ich dann folgendermaßen auf meinen Cache zuzugreifen:
PHP-Code:
public function index(): Response
{
$cache = new FilesystemAdapter();
$result = $cache->getItem($this->cacheKey);
if (!$result->isHit()) {
if (!$this->requestDatabaseHandler->isRequestRunning()) {
$pageSpeedInsights = 'restart';
} else {
$pageSpeedInsights = 'running';
}
} else {
$pageSpeedInsights = $result->get();
}
....
}
Leider ist mein im Service erstelltes Cache-Item dann nicht mehr im Controller vorhanden.
Wenn ich es am Ende meines Services abrufe, ist es aber vorhanden.
Die ttl meines Cache-Objekts ist ebenfalls hoch genug eingestellt.
Hat jemand eine Idee, woran das liegen könnte? Bzw. wieso es auf meinem lokalen Test-System funktioniert und Remote nicht?
Muss ich das Cache-Item ggf. anders erstellen?
Vielen Dank für eure Ideen
Lesezeichen