Cache- und Upload-Funktion
Erste Schritte: Cache- und Upload-Funktion
Das phpFK – PHP Framework bietet optionale Module für
einen einfachen, datei-basierten Cache und für Datei-Uploads.
In diesem Tutorial lernst du, wann sich das Caching lohnt
und wie du Dateien sicher hochladen kannst.
Datei-basiertes Caching einschalten
Ein Cache-System kann gerade bei aufwendigen Datenbankabfragen
oder API-Aufrufen die Performance deiner Anwendung spürbar steigern.
Statt bei jedem Seitenaufruf erneut alle Prozesse auszuführen,
schreibst du die Ergebnisse in eine Cache-Datei
und lädst sie wieder ein, solange sie noch gültig (nicht abgelaufen) ist.
Konfiguration: config/cache.php
Im Ordner config/ findest du typischerweise
eine Datei cache.php, in der du Einstellungen
zum Cache-System vornehmen kannst:
return [
'ENABLED' => true,
'PATH' => STORAGE_PATH . 'cache/',
'TTL' => 600 // Zeit in Sekunden (z. B. 10 Minuten)
];
– ENABLED: Schaltet das Caching ein oder aus.
– PATH: Ordner, in dem Cache-Dateien gespeichert werden.
– TTL: „Time To Live“, also wie lange (in Sekunden)
ein Cache-Eintrag gültig sein soll.
Cache verwenden
Steht das Caching auf ENABLED = true, kannst du
in public/index.php oder in deinem Controller
den Cache initialisieren und verwenden. Ein vereinfachtes Beispiel:
use Core\Cache;
$cacheConfig = require CONFIG_PATH . 'cache.php';
Cache::init($cacheConfig);
// Wert in den Cache speichern
Cache::put('meinschluessel', 'Hallo Welt!', 300);
// Wert wieder aus dem Cache lesen
$data = Cache::get('meinschluessel');
if ($data !== null) {
echo "Gecachte Daten: " . $data;
} else {
echo "Wert nicht gefunden oder abgelaufen.";
}
1. Cache::init liest deine Cache-Konfiguration ein.
2. Cache::put legt den Wert „Hallo Welt!“ unter
dem Schlüssel meinschluessel für max. 300 Sekunden ab.
3. Cache::get gibt entweder den gespeicherten Wert zurück
oder null, wenn er nicht existiert oder abgelaufen ist.
Tipps zum Caching
- Wähle sinnvolle TTL-Werte: Nicht zu kurz, damit Caching überhaupt
Effekt bringt, aber auch nicht zu lang, damit deine User keine
veralteten Daten sehen. - Dateirechte checken: Der Ordner storage/cache/
braucht Schreibrechte für deinen Webserver. - Cache löschen: Beim Entwickeln kann es Sinn machen,
ab und zu den Cache-Ordner manuell zu leeren,
falls du neue Änderungen nicht siehst. - Prüfe alternative Treiber: Bei sehr hohem Traffic
oder größeren Datenmengen könnte ein In-Memory-Cache
wie Redis oder Memcached sinnvoll sein.
Datei-Upload-Funktion
Das phpFK – PHP Framework enthält außerdem eine einfache
Upload-Klasse, die dir den Upload von Dateien (z. B. Bildern, PDFs)
erleichtert. Über config/upload.php lässt sich
steuern, welche Dateitypen erlaubt sind und wo sie abgespeichert werden.
Konfiguration: config/upload.php
So könntest du deine Upload-Einstellungen definieren:
return [
'UPLOAD_PATH' => STORAGE_PATH . 'uploads/',
'ALLOWED_TYPES' => ['image/jpeg', 'image/png', 'application/pdf'],
'MAX_SIZE' => 2 * 1024 * 1024 // 2 MB
];
– UPLOAD_PATH: Zielordner für hochgeladene Dateien
– ALLOWED_TYPES: Liste erlaubter MIME-Typen (Sicherheitsmaßnahme)
– MAX_SIZE: Maximal erlaubte Dateigröße in Bytes
Upload im Controller
Ein einfaches Beispiel, wie du in einer Route auf den Upload reagieren kannst:
// app/controllers/UploadController.php
namespace App\Controllers;
use Core\Controller;
use Core\Upload;
class UploadController extends Controller
{
public function form()
{
// Einfaches Formular, das die Datei an dieselbe Route per POST sendet
// Darum hier einfach mit "echo" und HTML:
echo <<<HTML
<form method="POST" enctype="multipart/form-data">
<input type="file" name="userfile" />
<button type="submit">Hochladen</button>
</form>
HTML;
}
public function handle()
{
// Lies die Upload-Konfiguration
$config = require CONFIG_PATH . 'upload.php';
$uploader = new Upload($config);
$result = $uploader->uploadFile('userfile');
if ($result['success']) {
echo "Upload erfolgreich! Gespeichert unter: " . $result['path'];
} else {
echo "Fehler: " . $result['error'];
}
}
}
Hier haben wir:
- form() zeigt ein einfaches HTML-Formular für den Datei-Upload.
- handle() nimmt die hochgeladene Datei entgegen,
ruft uploadFile(‚userfile‘) auf und gibt eine Erfolgsmeldung
oder Fehlermeldung aus.
Routes definieren
Damit deine Anwendung weiß, wie sie auf /upload oder /upload/handle reagiert,
legst du in app/routes.php fest:
// app/routes.php
$router->addRoute('/upload', [\App\Controllers\UploadController::class, 'form']);
$router->addRoute('/upload/handle', [\App\Controllers\UploadController::class, 'handle']);
Sicherheit beim Upload
1. Prüfe Dateitypen und Größe: Die Upload-Klasse
nimmt nur Dateien an, deren MIME-Type in ALLOWED_TYPES eingetragen ist
und die MAX_SIZE nicht überschreitet.
2. Setze korrekte Zugriffsrechte: Der Ordner storage/uploads/
sollte für den Webserver beschreibbar, aber nicht für die Öffentlichkeit erreichbar sein,
wenn du vertrauliche Daten hochlädst.
3. Vermeide ausnutzbare Scripts: Gewähre hochgeladenen Dateien
niemals direkte Ausführungsrechte, um PHP-Shells oder ähnliche Exploits zu verhindern.
Eine passende .htaccess-Datei (Deny all) in uploads/ kann helfen.
Fazit
Das phpFK – PHP Framework macht es dir sehr leicht,
Caching und Datei-Uploads zu integrieren.
Mit ein paar Zeilen Code kannst du wertvolle Zeit beim
Datenbank- oder API-Zugriff sparen und flexibel Dateien
ins storage/uploads-Verzeichnis hochladen.
Achte beim Cachen auf sinnvolle TTL-Werte
und sichere deinen Upload-Ordner bestmöglich ab.
So kombiniert dein Projekt reibungslose Performance
mit einer bequemen Benutzererfahrung für Dateiuploads.