mächtige Anzahl von bildern verwalten

  • hiho, ab und zu hab ich ja auch ma ne frage :D

    also um direkt zur sache zu kommen. ich bin derzeit in der konzeption einer ip-cam-alarmbilder-übersicht.
    bei jedem bewegungsalarm werden 6 bilder oder so in den space gejagt (natürlich auch bei fehl-alarmen)
    da dachte ich mir zuerst: jau machste nen glob, zeigst die bilder an und feddich
    nur bei knapp 1000 bildern war des arg langwierig..^^
    jetzt bei 3000+ ist es unmöglich gewesen.

    also exif-daten auslesen, gruppieren nach datum und hab ne anzahl X fürs zeigen
    jedoch werden ja immernoch zuerst mal alle 3000+ bilder im ordner ausgelesen.

    was wäre ein sinnvoller weg das prozedere zu beschleunigen?
    wenn ich ne datenbank nutze, muss ich ja noch immer nen abgleich machen, ob neue bilder hinzugekommen sind.
    wenn ich das ergebnis-array serialize und als cache speicher, bleibt mir ja auch nichts anderes übrig, als den abgleich zu machen.

    ein bild hat knapp 30KB größe (die nachtbilder noch weniger) aber ich denke mir dass ich irgendwie die anzahl der auszulesenden bilder verringern muss.

    cronjob und den dann jeden morgen laufen lassen und das ergebnis cachen?

    fragen über fragen^^
    hat wer von euch überhaupt schomma so ne menge an files verwurstet?

    bin auf eure ideen gespannt :)

    edit: 500 bildrequest sind da ca 25-30 sekunden

    Einmal editiert, zuletzt von synaptic (20. April 2013 um 01:23)

  • Ich würde mir pro Tag einen eigenen Ordner anlegen und die Bilder entsprechend verteilen. Da werden dann ja vermutlich nicht so viele Bilder zusammenkommen und pro Jahr hast du dann ha auch eine überschaubare Anzahl Ordner. Wenn man beim Ablegen der Bilder die Verzeichnisstruktur nicht anlegen kann, dann halt per Cron die Verzeichnisse anlegen und die Bilder verteilen.

  • ja das wäre der nächste punkt gewesen... die verzeichnisse sind nicht wählbar in dem sinne. die webcam hat da nur die möglichkeit der pfadangabe für einen ordner. das mit dem cron is keine schlechte idee quasi immer um 0:01 die bilder verteilen.

    wie kann ich dem php-script vorgaukeln, es is der ftp-user? weil so ja die berechtigungen auf dem ftp-user liegen mit rw-r--r-- (0644)

  • Wenn du die Rechte mit PHP nicht ändern kannst, könntest du ja ein Script schreiben, dass per FTP-Funktionen die Dateien verschiebt. Ist zwar nicht schön, aber immerhin eine Lösung.

  • könntest du nicht auch per PHP (mit ner Fertigen FTP-API, gibts ja bestimmt) als PHP-Script vorgaukeln, der FTP-Server zu sein und dann die Bilder nach Alarm zu sortieren? Oder dass alle 10min ein Cronjob alle dateien die kurz hinereinander gemacht wurden einsortiert?
    Dann kannst du parallel dazu ne Datenbank führen, in die alle Daten eintragen (Aufnahmezeitpuknt etc...) und die Bilder damit geordnet anzeigen.

    Der, der weiß dass er nichts weiß, weiß mehr als der, der nicht weiß, dass er nichts weiß.

    Wer nach etwas fragt, geht grundsätzlich das Risiko ein, es auch zu bekommen!

  • ja wann die bilder gemacht wurden bekomm ich ja über die exif-daten raus.
    hab eben mit meinem hoster telefoniert, weil die modulversion von php keine system-befehle mag, aber ich kann das ganze als cgi nutzen und da wird automatisch der ftp-user statt der www-user genommen, was zur folge hat dass mich die dateiberechtigungen nich mehr jucken brauchen :D
    über die cgi-version gehen auch system() - befehle und damit hab ich alle wege, die mir interessant sind offen.

    mit der datenbank.. da überlege ich noch. vorteil ist dabei natürlich, dass mich die exifdaten und mehr gar nich mehr jucken brauchen, wenn ich beim einsortieren der files schon alles nötige in der db sichere. will sagen wenn durch nen doofen zufall die exif oder filetime-infos verfälscht würden, hab ich noch immer das originale datum parat. weiterer vorteil der db: man kann die bilder behalten und nur deaktivieren oder auch löschen, wie man es grad braucht.
    dann dachte ich an sowas wie ne user-galerie, so dass man von extern auch die bilder ansehen kann, also ne auswahl.

    ordner auslesen ist auch so ne sache, hab heute mal 10 minuten experimentiert.
    100 files auslesen anzeigen:
    glob ~ 5.1sek (automatisch sortiert)
    scandir ~ 4.9sek (automatisch sortiert)
    DirectoryIterator 6.25 sek (unsortiert)

    irgendwie is mir das noch zu lahm...^^ also alles.

    bin gespannt, was das einbinden der datenbank bringen wird ;)

  • Na also wenn ne Datenbank zum durchsehen und ausgeben (SELCET ... WHERE ... ORDER BY) von sagen wir mal 10.000 Datensätzen, länger als 3 Sekunden braucht haste schlicht nen lahmen server.

    Der, der weiß dass er nichts weiß, weiß mehr als der, der nicht weiß, dass er nichts weiß.

    Wer nach etwas fragt, geht grundsätzlich das Risiko ein, es auch zu bekommen!