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.