Erste Schritte
Cron einrichten
Zwei Einträge. Beide sind nötig, und sie tun Verschiedenes. Pfad anpassen:
* * * * * cd /pfad/zu/fileshare && php artisan queue:work --stop-when-empty >> /dev/null 2>&1
0 3 * * * cd /pfad/zu/fileshare && php artisan fileshare:cleanup --force >> /dev/null 2>&1
| Eintrag | Was er tut | Ohne ihn |
|---|---|---|
queue:work |
Prüfsummen berechnen, Dateien ver- und entschlüsseln | Bleibt jede Änderung des Verschlüsselungszustands hängen |
fileshare:cleanup |
Abgelaufene Links samt Datei löschen, Chunk-Reste, alte Download- und Versandprotokolle und IP-Adressen entfernen | Greift keine Aufbewahrungsfrist |
Ohne --force ist fileshare:cleanup ein Testlauf: Er zeigt, was gelöscht würde, und
verändert nichts. Führe ihn einmal von Hand aus, bevor du den Cron scharf schaltest.
Dauerhafter Worker statt Cron
Auf einem Server mit systemd ist ein laufender Worker die bessere Wahl als der Minuten-Cron — er nimmt Arbeit sofort an statt beim nächsten Minutenwechsel:
; /etc/systemd/system/fileshare-worker.service
[Unit]
Description=Fileshare Queue Worker
After=network.target
[Service]
User=www-data
Restart=always
ExecStart=/usr/bin/php /var/www/fileshare/artisan queue:work --sleep=3 --tries=3 --timeout=3600
[Install]
WantedBy=multi-user.target
Das lange --timeout ist nötig: Das Verschlüsseln einer mehrere Gigabyte großen Datei
dauert.
Nach jeder Aktualisierung php artisan queue:restart ausführen — sonst arbeiten laufende
Worker mit dem alten Code weiter, und Fehler treten scheinbar zufällig auf.
Kontrolle
php artisan queue:failed
Listet fehlgeschlagene Hintergrundarbeiten. Ein Upload, der bei 100 % stehen bleibt, und ein „wird geändert …", das nicht verschwindet, stehen hier.
Quelle dieser Seite:
docs/cron.md
im Repository. Sie wird beim Bauen daraus erzeugt — Änderungen gehören in die
Markdown-Datei, nicht in diese Seite.