php.de

Zurück   php.de > Webentwicklung > PHP-Fortgeschrittene

PHP-Fortgeschrittene Arbeiten mit PHP ohne Einschränkungen

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 27.12.2011, 15:41  
Erfahrener Benutzer
 
Benutzerbild von serious-cool
 
Registriert seit: 12.09.2008
Beiträge: 154
PHP-Kenntnisse:
Fortgeschritten
serious-cool befindet sich auf einem aufstrebenden Ast
Standard Wann Thumbnail erzeugen?

Moin,

ich stehe vor einer Entscheidung:
Wann lasse ich Thumbnails generieren?

1.Möglichkeit:
Direkt beim speichern der Datei werden vom Model alle Presets in das Dateisystem geschrieben.
Vorteil: Einmal Systemlast erzeugen, dann für immer Ruhe haben.
Nachteil: Werden die Presets geändert, verfallen praktisch alle Thumbnails.
Nachteil: Bei 20000 Bilddateien wird der Speicherverbrauch merklich.

2. Möglichkeit:
Dynamische Erzeugung durch die Getter-Action bei Aufruf:
Der Thumbnail wird auf Abruf nach dem angeforderten Preset erzeugt, an den Clienten gesendet und verworfen.
Vorteil: Weniger Speicherplatz nötig.
Nachteil: höhere Systemlast.

3. Möglichkeit:
Der Thumbnail wird wie in Möglichkeit zwei erzeugt aber nicht verworfen sondern auf der Dateibene abeglegt.
Vorteil: Nur der nötige Speicherplatz wird gebraucht.
Nachteil/Vorteil? Systemlast?

Welche Methode würdet Ihr nehemen?

Hintergrundinfo: Da ich den Speicherort offen lassen möchte und eine AccessChecks laufen werden die Dateien immer über einen Getter geliefert.
__________________
Ein Klauenhammer ist kein Schraubendreher, auch wenn beide das Problem ,,Schraube-Wand" bidirektional lösen können.
serious-cool ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 27.12.2011, 15:52  
Erfahrener Benutzer
 
Registriert seit: 26.11.2008
Beiträge: 264
dsentker befindet sich auf einem aufstrebenden Ast
Standard

Das kommt immer auf den Anwendungsfall an.
Zitat:
Direkt beim speichern der Datei werden vom Model alle Presets in das Dateisystem geschrieben.
Vielleicht liegt hier schon der Fehler. Ein Model schreibt nicht, sondern bildet nur Datenssätze ab. Eine Datenbank ist dem Model völlig unbekannt.
__________________
dsentker ist offline   Mit Zitat antworten
Alt 27.12.2011, 16:19  
Erfahrener Benutzer
 
Benutzerbild von serious-cool
 
Registriert seit: 12.09.2008
Beiträge: 154
PHP-Kenntnisse:
Fortgeschritten
serious-cool befindet sich auf einem aufstrebenden Ast
Standard

Die Anwendung soll eben universal werden ; ) von der Steuerung von Produktbildern bis zum Fotoalbum einer Comunity muss mein Filemanager erstal alles abkönnen.



Offtopic:
Nicht im Yii Framework, dort sellt das Model die Methoden zum speichern von Datenbankeinträgen bereit.
Dies finde ich sehr sinnvoll da ich in der Action nichts mit der Datenhaltung zu tun haben will,

Mal meine (kurze) Stuktur:
BaseFileModel extends CActiveRecord
(save() Speichert nur den Datensatz)
->ImageFileModel extends BaseFileModel
(save() Speichert auch die Datei und könnte Thumbs erzeugen lassen)
->PdfFileModel extends BaseFileModel
(save() Speichert auch die Datei, kann eine Vorschau über eine andere Servererweiterung erstellen.)

Letztlich gibt es zwischen Möglichkeit eins und den anderen beiden nur die Frage des Ablaufs:
1. $Image -> save()->generatePresets();
2. und 3. Image::model()->findByHash($hash)->deliverPreset('xyz');
Nur dass sich bei 2. und 3. die deliverPreset() Methode etwas unterscheidet.

Das BaseFileModel stellt natürlich alle Methoden zum Lesen und schreiben. Die anderen Models überladen oder überschreiben einige Methoden nach eigenem Bedarf. Eine Miniaturansicht einer PDF wird ja anders generiert als die einer Bilddatei. Auf welche Art und Weise dies geschied muss die Konfiguration entscheiden. Im Controller reicht es den Befehl zum speichern zu geben.
__________________
Ein Klauenhammer ist kein Schraubendreher, auch wenn beide das Problem ,,Schraube-Wand" bidirektional lösen können.
serious-cool ist offline   Mit Zitat antworten
Alt 27.12.2011, 16:23  
meikel
Gast
 
Beiträge: n/a
Standard

Zitat:
Zitat von serious-cool Beitrag anzeigen
ich stehe vor einer Entscheidung:
Wann lasse ich Thumbnails generieren?
Prinzipell dann, wenn sich die Vorlage für das Vorschaubild ändert bzw. wenn eine neue Vorlage erstellt wird.

Sollte es sich hierbei um janz normale Bilder handeln, empfehle ich Dir, die Bearbeitung mit imageMagick in der Shell zu erledigen.
  Mit Zitat antworten
Alt 27.12.2011, 16:30  
Erfahrener Benutzer
 
Registriert seit: 26.11.2008
Beiträge: 264
dsentker befindet sich auf einem aufstrebenden Ast
Standard

OT:
Zitat:
Nicht im Yii Framework, dort sellt das Model die Methoden zum speichern von Datenbankeinträgen bereit.
Dies finde ich sehr sinnvoll da ich in der Action nichts mit der Datenhaltung zu tun haben will,
Die Actions haben natürlich genausowenig mit der Persistenz zu tun. Aber um deine nächste Frage vorweg zu nehmen: Dafür gibt es Repositories. Ich weiss, dass das Yii Framework (und andere, wie CodeIgniter) gerne mal die Aufgabe der Persistzenz direkt dem Model zu sprechen, was aber m.E. falsch ist (btw: Schau dir doch mal meinen verlinkten Blogartikel in meiner Signatur an).
__________________
dsentker ist offline   Mit Zitat antworten
Alt 27.12.2011, 16:46  
Erfahrener Benutzer
 
Benutzerbild von serious-cool
 
Registriert seit: 12.09.2008
Beiträge: 154
PHP-Kenntnisse:
Fortgeschritten
serious-cool befindet sich auf einem aufstrebenden Ast
Standard

Ich hab jetzt nur mal den Model Teil überflogen. Ja, klar Du hast recht. Das Model hat in Yii ja steng genommen auch nichts mit der Persistenz zu tun, diese Fähigkeit erbt es lediglich vom ActiveRecord-dein Repository. Eigentlich müsste ich dann diese Klasse(n) erweitern.

--- Damit wäre meine ursprüngliche Frage aber noch nicht beantwortet---
__________________
Ein Klauenhammer ist kein Schraubendreher, auch wenn beide das Problem ,,Schraube-Wand" bidirektional lösen können.

Geändert von serious-cool (27.12.2011 um 17:02 Uhr).
serious-cool ist offline   Mit Zitat antworten
Alt 27.12.2011, 17:53  
Erfahrener Benutzer
 
Benutzerbild von fireweasel
 
Registriert seit: 20.03.2010
Beiträge: 474
PHP-Kenntnisse:
Fortgeschritten
fireweasel ist ein Lichtblickfireweasel ist ein Lichtblickfireweasel ist ein Lichtblickfireweasel ist ein Lichtblickfireweasel ist ein Lichtblick
fireweasel eine Nachricht über ICQ schicken fireweasel eine Nachricht über AIM schicken fireweasel eine Nachricht über Yahoo! schicken fireweasel eine Nachricht über Skype™ schicken
Standard

Zitat:
Zitat von serious-cool Beitrag anzeigen
Moin,

ich stehe vor einer Entscheidung:
Wann lasse ich Thumbnails generieren?
Wenn die LibGD im Spiel ist, immer an der Stelle, wo das plötzliche Beenden des Scripts wegen Speichermangel den wenigsten Schaden anrichtet oder abgefangen werden kann (letzeres ist allerdings schwierig).

Und ausgehend von der Annahme, dass die Vorschau- und Original-Grafiken öfter angezeigt als bearbeitet werden, ist es am sinnvollsten die Thumbnails dann zu erzeugen, wenn die Originalgrafik erstellt oder geändert wurde.

Geändert von fireweasel (27.12.2011 um 19:24 Uhr).
fireweasel ist offline   Mit Zitat antworten
Alt 27.12.2011, 20:49  
Erfahrener Benutzer
 
Registriert seit: 10.01.2010
Beiträge: 386
PHP-Kenntnisse:
Fortgeschritten
ChrisvA befindet sich auf einem aufstrebenden Ast
Standard

Vielleicht hilft es auch mal den Gesichtspunkt der Rechenlast/ des Speicherverbrauchs zu berücksichtigen:
Würde es der Server ohne Probleme schaffen die Thumbnails live nach Methode 2 auszuliefern, oder würde da zu massiven Performance Einbrüchen führen?
Hat der Server genügend Festplatte um alle Thumbnails abzuspeichern (Methode 1)?
Gibt es einzelne Thumbnails, die besonders häufig gebraucht werden, oder werde alle in etwa gleich oft benötigt?
Falls es Thumbnails gibt, die oft benötigt werden, könnte man diese Cachen und die seltenen dann erst erzeugen, wenn man sie braucht.
ChrisvA ist offline   Mit Zitat antworten
Alt 27.12.2011, 21:36  
meikel
Gast
 
Beiträge: n/a
Standard

Zitat:
Zitat von serious-cool Beitrag anzeigen
--- Damit wäre meine ursprüngliche Frage aber noch nicht beantwortet---
Die Frage beantwortet doch der gesunde Menschenverstand:
wenn der User nach dem Klick mehr als 1 sec. warten muß, bis sich Dein Parser durch alle PHP-Instanzen gequält hat, machst Du was falsch.

Wenn Du aus dicken Bildchen kleine Vorschaubilder erstellen willst, nimm das:
http://www.imagemagick.org/script/convert.php
  Mit Zitat antworten
Alt 28.12.2011, 01:27  
Erfahrener Benutzer
 
Benutzerbild von serious-cool
 
Registriert seit: 12.09.2008
Beiträge: 154
PHP-Kenntnisse:
Fortgeschritten
serious-cool befindet sich auf einem aufstrebenden Ast
Standard

Zumindest auf meinem Server ist sowohl die Rechenleistung als auch der Speicherplatz mehr als ausreichend vorhanden. Es steht allerdings offen wo das Modul später überall verwendet wird.
Wenn ich mir ChrisvAs Einwurf, mit dem Skriptabbruch so ansehe, werde ich die Erzeugung in der Getter-Action anstoßen und der Getter-Action einen Parameter übergeben der die Lebensdauer steuert. So können z.B. Produktbilder dauerhaft abgelegt werden, während das Fotoalbum von TeilnehmerIII erst auf Abruf generiert wird. Wenn dann das Skript warum auch immer ausfällt geht nichts wichtiges kaputt..
__________________
Ein Klauenhammer ist kein Schraubendreher, auch wenn beide das Problem ,,Schraube-Wand" bidirektional lösen können.
serious-cool ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Thumbnail von PDF erzeugen de_Joerg PHP Einsteiger 3 09.05.2011 22:10
bild von einer website erzeugen alexPHP PHP Einsteiger 8 13.04.2011 20:33
URLs erzeugen und routen fat32 Software-Design 5 25.10.2009 19:54
Problem mit Benutzerrechten nach Thumbnail erstellung Arguss PHP Tipps 2008 8 08.12.2008 22:24
Voraussetzungen für dieses Thumbnail Skript Plague PHP Tipps 2008 9 19.09.2007 13:35
Tool um (Spiel)Klassen zu erzeugen Martin13 PHP-Fortgeschrittene 6 05.09.2007 02:25
SQL Abfrage erzeugen/ string bearbeitung easy PHP Tipps 2007 20 28.03.2007 22:12
erstelltes Thumbnail verpixelt... alisa PHP Tipps 2006 12 23.10.2006 07:28
Thumbnail wird nicht generiert. Daskaras PHP Tipps 2006 12 13.03.2006 22:16
Thumbnail erzeugen und anzeigen PHP-Fortgeschrittene 20 23.11.2005 15:00
Datei mit php erzeugen Stümper PHP Tipps 2004 4 12.10.2004 12:51
array_push nur in begrenzter Anzahl ausführen ? PHP Tipps 2004 2 07.09.2004 09:05
[Erledigt] variable Tabellen erzeugen PHP Tipps 2004 1 14.06.2004 09:33

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
thumbnail nachteil, php thumbnail erzeugen, \miniaturansicht\ erstellen thumbs save, php miniaturansicht eines pdf erzeugen, codeigniter thumbnail erstellen

Alle Zeitangaben in WEZ +2. Es ist jetzt 22:49 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum