Kann man mit PHP Metadaten in Datei schreiben?

5 Antworten

Wenn du schon weißt, dass an den Dateien manuell rum gespielt / diese verschoben werden, lass das mit den Dateien besser, und setze auf eine vernünftige Lösung. Entweder eine Datenbank, wenn es denn permanent gespeichert werden muss, alternativ Cookies, wenn das nur kurzfristig gespeichert werden muss.

Falls du bei Dateien bleiben willst... Die PHP-Referenz hat zum Thema "In Dateien schreiben" eine ganze Seite: https://www.php.net/manual/de/function.file-put-contents.php

Eine Funktion wie "write_last_video_timestamp_into_proprietary_metafile()" gibt es aus gutem Grund nicht. Es gibt dafür einfach keine "genormte" Schnittstelle. Nimm einfach file_put_contents() und ein standardisiertes Dateiformat wie JSON oder XML. Beides unterstützt PHP ausgereift.

Woher ich das weiß:Berufserfahrung – Inhaber einer App-Agentur & 15+ Jahre Programmiererfahrung

Du kannst mit PHP beliebige Dinge in Datei schreiben, also auch Metadaten in deine Videodateien. Problem dürfte aber sein, dass es dafür keine "bequeme", allgemeingültige Schnittstelle gibt. Du müsstest also abhängig vom Dateiformat jeweils eine Sonderlocke programmieren. Wenn deine Videos alle das selbe Format haben mag das gehen, sonst macht das aber eher keinen Spaß mehr...

Außerdem ist unschön, dass du in den Dateien selbst "rumpfuschen" würdest. Wenn was schiefgeht ist die Datei ggf. korrupt, d.h. Schrott. Würde ich mir gut überlegen...

Unter Linux würde ich versuchen erweiterte Dateiattribute (xattr) zu verwenden. PHP kann die lesen und schreiben. Beim Kopieren/Verschieben sollten die (korrekte Flags vorausgesetzt) ganz normal mitkommen. Also Metadaten auf Ebene des Dateisystems!

Du könntest ein Cookie setzen, z. B. setcookie(filmname, position);

Woher ich das weiß:eigene Erfahrung

Das Problem ist ja eher, daß das Dateiformat die Möglichkeit für das einfügen von Metadaten vorsehen muß.

Andererseits hat jede Datei Metadaten (Erstellungsdatum, Name usw. usf.). Insofern wären Extended Attributes (da standardisiert und unabhängig vom Dateiformat) ein generisches Weg das umzusetzen, wenn man es nicht in einer getrennten Datenbank (bzw. KV-Store) mitführen möchte, wie es viele Systeme sonst tun.

Und ja, man könnte es natürlich auch im Store des Browsrs ablegen, dann könnte jeder Client seine eigenen Positionen abspeichern.

Letztlich also nur eine Frage dessen, was genau Du umsetzen möchtest.

Speichere die Informationen lieber Zentral in einer DB. Die Datei kannst du ja z.B. über einen Hash Wert wieder erkennen wenn diese Verschoben wurde oder einen neuen Namen hat..


siliciumcarbid 
Fragesteller
 13.01.2020, 17:06

Ja das war mein Plan, der eigentlich richtig gut wäre. Aber viele Dateien sind 0,1 bis 2GB groß und das dauert dann bis zu einer Minute, bis der Hash erstellt wurde.

0