- Ad -
php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Post your PHP questions here!

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #31 (permalink)  
Alt 07-07-2009, 21:12
Benutzerbild von fireweasel fireweasel
 Registrierter Benutzer
Links : Onlinestatus : fireweasel ist offline
Registriert seit: Sep 2008
Ort: At home
Beiträge: 680
fireweasel wird schon bald berühmt werden
fireweasel eine Nachricht über AIM schicken fireweasel eine Nachricht über Yahoo! schicken
Standard

Zitat:
Zitat von piratos Beitrag anzeigen
Bleiben wir mal bei dem vorhandenen:

Direktausgabe (bekannt)
PHP-Code:
 <?php
$img 
imagecreatefromjpeg($imgname);
header('Content-Type: image/jpg');
imagejpeg($img);
?>
Was'n Unfug. Wieso lässt du die Bilddaten über die GD-Lib-Funktionen laufen? Das verbrät nur unnötig Speicher und Rechenzeit, und falls die Abmessungen zu groß sind, um per GD-Lib in den Hauptspeicher geladen zu werden, bekommst du noch die "Out-of-Memory"-Meldung inklusive Scriptabbruch. Schau dir mal readfile() an. Das leidet unter keiner dieser Limitierungen.

Zitat:
Beim Einsatz von Templateengine weist man die Inhalte zu und gibt Sie dann an der gewünschten Stelle aus.
PHP-Code:
$img imagecreatefromjpeg($imgname);
imagejpeg($img);
$out ob_get_contents();
ob_end_clean();
$tpl->assign('bild1',$sout); 
Im Inhalt sprich Template setzte man dann z.B.
PHP-Code:

 header
('Content-Type: image/jpg');
echo 
$tpl->VARS['bild1']; 
Schau mal, das geht auch in 3 Zeilen und ganz ohne unnötiges Output-Buffering:
PHP-Code:
$tpl->assign('bild1'file_get_contents($imgname));
header('Content-Type: image/jpg');
echo 
$pl->VARS['bild1']; 
Ich würde aber die Variante mit readfile() vorziehen, weil die nicht den Umweg über eine PHP-String-Variable geht und somit auch nicht vom Memory-Limit abhängig ist.

Zitat:
Damit ist der Code von der Ausgabe getrennt.

Was auch immer man im Code anstellt ist für die Ausgabe und deren Gestaltung unineteressant.

Das war das simple Prinzip einer Templateengine.
Das glaubst du.

Google doch einmal nach "presentation logic" und "business logic" und vergiss "Code" und "Gestaltung" lieber wieder.
__________________
PHP-Code:
class Brick implements Throwable {
    
// ... 

Mit Zitat antworten
  #32 (permalink)  
Alt 07-07-2009, 21:49
piratos
 Guest
piratos
Beiträge: n/a
Standard

Also ich muss mich schon sehr wundern.

Das ist ein Minibeispiel um das zu verdeutlichen und nichts konkretes im Einsatz.

Und was Templateengine betrifft musst du mir rein nichts erzählen, nicht nur das ich Jahre an Erfahrungen mit diversen habe sondern zudem auch noch eine eigene.

Und wie man so etwas perfomant gestaltet das muss mir auch keiner erzählen das ist im brutalen Altagseinsatz und das nicht bei Pippifax - Websites.

Und das eine Templateengine höchst performant eingesetzt werden kann, das wissen alle meine User.
Mit Zitat antworten
  #33 (permalink)  
Alt 07-07-2009, 22:02
PHP-Desaster
 PHP Expert
Links : Onlinestatus : PHP-Desaster ist offline
Registriert seit: Mar 2006
Beiträge: 3.104
PHP-Desaster befindet sich auf einem aufstrebenden Ast
Standard

Es geht hier ja nicht um das Für und Wider von Templateengines generell, sondern um die Tatsache, dass der Einsatz einer solchen für das Ausliefern eines Bildes einfach überflüssig ist, sondern sogar zu umständlich wäre. Separation von Präsentation und Business ist die eine Sache, aber bei der Auslieferung einfachster Ressourcen kann wohl kaum von Business gesprochen werden. Nebenbei führt der Einsatz einer Templateengine nicht direkt zu der Trennung zuvor genannter.
Mit Zitat antworten
  #34 (permalink)  
Alt 07-07-2009, 22:12
unset
  Moderator
Links : Onlinestatus : unset ist offline
Registriert seit: Jan 2007
Ort: Düsseldorf
Beiträge: 3.778
unset befindet sich auf einem aufstrebenden Ast
Standard

Verstehe ich immer noch nicht. Das Template besteht also aus nichts als aus einem Header und den Bilddaten?

Ich würde im Leben ja nicht auf die Idee kommen, im View (respektive Template) nochmal einen Header zu schicken?!
Mit Zitat antworten
  #35 (permalink)  
Alt 08-07-2009, 00:52
Benutzerbild von onemorenerd onemorenerd
  Moderator
Links : Onlinestatus : onemorenerd ist offline
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.481
onemorenerd wird schon bald berühmt werdenonemorenerd wird schon bald berühmt werden
Standard

Zitat:
Zitat von piratos Beitrag anzeigen
... musst du mir rein nichts erzählen ... Jahre an Erfahrungen ... eine eigene ... im brutalen Altagseinsatz ... nicht bei Pippifax - Websites
Ich habe mir dein Zeug* mal angesehen. Die Applikation sind 500 Zeilen Spaghetticode. Die Template Engine besteht im Wesentlichen aus zwei kruden eval()-s. Die Performance kommt duch exzessives Caching.

Da steckt kein bißchen Erfahrung drin. *no offense*


*) Link in deinem Profil. Ich will es nicht namentlich nennen, denn Google liest mit.
Mit Zitat antworten
  #36 (permalink)  
Alt 08-07-2009, 00:59
unset
  Moderator
Links : Onlinestatus : unset ist offline
Registriert seit: Jan 2007
Ort: Düsseldorf
Beiträge: 3.778
unset befindet sich auf einem aufstrebenden Ast
Standard

Non-Pipifax-Seiten, bei denen ich hinter die Kulissen gucken konnte, haben durchweg gar kein Templatesystem/-Engine verwendet. Von PHP mal abgesehen Und ich durfte schon ein bisschen sehen
Mit Zitat antworten
  #37 (permalink)  
Alt 08-07-2009, 14:06
Benutzerbild von fireweasel fireweasel
 Registrierter Benutzer
Links : Onlinestatus : fireweasel ist offline
Registriert seit: Sep 2008
Ort: At home
Beiträge: 680
fireweasel wird schon bald berühmt werden
fireweasel eine Nachricht über AIM schicken fireweasel eine Nachricht über Yahoo! schicken
Standard

Zitat:
Zitat von piratos Beitrag anzeigen
Das ist ein Minibeispiel um das zu verdeutlichen und nichts konkretes im Einsatz.
Wir hatten hier aber ein konkretes Problem zu lösen -- und der hierfür unnötige Einsatz einer Template-Engine dürfte den Threaderöffner eher verwirren, denn erhellen. Er hatte ja so schon Schwierigkeiten, den gegebenen Ratschlägen zu folgen.


Zitat:
Und was Templateengine betrifft musst du mir rein nichts erzählen, nicht nur das ich Jahre an Erfahrungen mit diversen habe sondern zudem auch noch eine eigene.

Und wie man so etwas perfomant gestaltet das muss mir auch keiner erzählen das ist im brutalen Altagseinsatz und das nicht bei Pippifax - Websites.
Ich hatte keineswegs vor, dir auf die Füße zu treten.
Die "Performance-Betrachtungen" meinerseits waren hauptsächlich für den Threaderöffner gedacht. Allerdings redet er anscheinend nicht mehr mit uns ...

Zitat:
Und das eine Templateengine höchst performant eingesetzt werden kann, das wissen alle meine User.
Das mag sein, aber in dem Fall hier geht es um ein Script, das jedesmal dann gestartet wird, wenn eine kleine Grafik (so 'ne Art "webbug") angefordert wird. Das ist ansich schon Overkill, ein paar MByte Script-Engine anzuwerfen, nur um ein paar Bytes an Binärdaten auszuliefern. Da muss ich nicht auch noch eine Template-Engine includen.

Ich würde sogar soweit gehen, das Laden der (Grafik-)Datei ganz zu wegzulassen. Das hat neben der Einsparung von Dateioperationen den Vorteil, dass man keine Fehler mehr abfangen muss.

PHP-Code:
<?php
header
('Content-Type: image/gif');
echo 
base64_decode(
    
'R0lGODlhCAAIAIAAAAAAAPACH5BAAAAAAA//'.
    
'LAAAAAAIAAgAAAIKjI9pcKwPE5guFgA7'
);
?>
__________________
PHP-Code:
class Brick implements Throwable {
    
// ... 


Geändert von fireweasel (08-07-2009 um 18:51 Uhr)
Mit Zitat antworten
  #38 (permalink)  
Alt 08-07-2009, 14:25
unset
  Moderator
Links : Onlinestatus : unset ist offline
Registriert seit: Jan 2007
Ort: Düsseldorf
Beiträge: 3.778
unset befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von fireweasel Beitrag anzeigen
PHP-Code:
<?php
header
('Content-Type: image/gif');
echo 
base64_decode(
    
'R0lGODlhCAAIAIAAAAAAAPACH5BAAAAAAA//'.
    
'LAAAAAAIAAgAAAIKjI9pcKwPE5guFgA7'
);
?>
Aber auch nur, wenn es wirklich kleine Grafiken sind, wo der Request-Overhead die Dateigröße (in Summe) übersteigt. Ansonsten stehst du hier nämlich vor einem neuen Problem: Das Chaching des Browsers wird so ausgehebelt.
Mit Zitat antworten
  #39 (permalink)  
Alt 08-07-2009, 18:59
Benutzerbild von fireweasel fireweasel
 Registrierter Benutzer
Links : Onlinestatus : fireweasel ist offline
Registriert seit: Sep 2008
Ort: At home
Beiträge: 680
fireweasel wird schon bald berühmt werden
fireweasel eine Nachricht über AIM schicken fireweasel eine Nachricht über Yahoo! schicken
Standard

Zitat:
Zitat von unset Beitrag anzeigen
Aber auch nur, wenn es wirklich kleine Grafiken sind, wo der Request-Overhead die Dateigröße (in Summe) übersteigt.
Klar.

Zitat:
Zitat von unset Beitrag anzeigen
Ansonsten stehst du hier nämlich vor einem neuen Problem: Das Chaching des Browsers wird so ausgehebelt.
Was hier möglicherweise sogar gewünscht ist?

Die Anwendung als "Trackingpixel" schließt diese Interpretation zumindest nicht aus ...
__________________
PHP-Code:
class Brick implements Throwable {
    
// ... 

Mit Zitat antworten
  #40 (permalink)  
Alt 08-07-2009, 19:54
unset
  Moderator
Links : Onlinestatus : unset ist offline
Registriert seit: Jan 2007
Ort: Düsseldorf
Beiträge: 3.778
unset befindet sich auf einem aufstrebenden Ast
Standard

Naja, aber bei einem Trackingpixel _will_ man ja einen weiteren Request, und keinen Inlinepixel. Wenn man nämlich in der Lage ist, eine Grafik inline einzubauen, braucht man keinen Trackingpixel mehr.
Mit Zitat antworten
  #41 (permalink)  
Alt 08-07-2009, 19:58
Benutzerbild von onemorenerd onemorenerd
  Moderator
Links : Onlinestatus : onemorenerd ist offline
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.481
onemorenerd wird schon bald berühmt werdenonemorenerd wird schon bald berühmt werden
Standard

@unset: Wie kommst du auf inline?
Mit Zitat antworten
  #42 (permalink)  
Alt 08-07-2009, 20:01
unset
  Moderator
Links : Onlinestatus : unset ist offline
Registriert seit: Jan 2007
Ort: Düsseldorf
Beiträge: 3.778
unset befindet sich auf einem aufstrebenden Ast
Standard

Oh, wie peinlich. Ich sollte die Posts besser lesen ;-)

Hab da irgendwie in dieser Art was gelesen:

PHP-Code:
<img src="data:image/gif;base64,..." /> 
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Habe ein Problem beim Parameter übergeben an eine PHP Url BananaJo HTML, JavaScript, AJAX und CSS 9 12-06-2009 13:24
Wie kann ich eine JavaScript variable an PHP übergeben? HansDerLange PHP Developer Forum 10 17-03-2008 15:49
Eine PHP Datei über eine andere bearbeiten 0NyX PHP Developer Forum 9 24-08-2007 09:21
Kann man als Standardwert für einen Parameter eine Globale Variable angeben? Jones011 PHP Developer Forum 6 17-08-2006 09:16
Wer kann mir helfen aus einer XML - Datei eine XSL Datei (Tabellenform) darzustellen sonja_22 Projekthilfe 3 04-08-2005 13:39

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre 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


PHP News

MariaDB 5.5 veröffentlicht
MariaDB 5.5 veröffentlichtDie freie MySQL-Alternative MariaDB wurde in der stabilen Version 5.5.23 veröffentlicht und soll einige Verbesserungen gegenüber Oracles Communityversion von MySQL mitbringen.

16.04.2012 | Berni

Deutsche Yii Framework Community
Deutsche Yii Framework CommunitySeit dem 19.03.2012 gibt es für die Yii PHP Framework Community ein deutsches Zuhause.

20.03.2012 | dhcomputer

 

Aktuelle PHP Scripte

EM 2012 Tipp-Spiel ansehen EM 2012 Tipp-Spiel

Online Tipp-Spiel zur Fussball Europameisterschaft 2012, basierend auf php-Script mit hinterlegter mySql-Datenbank

27.05.2012 tippimnetz | Kategorie: PHP/ Spiele
Advanced Login ansehen Advanced Login

Login-System und Kundenverwaltung, die sich spielend leicht in bestehende Webseiten einbauen lässt und einen enormen Funktionsumfang bietet. Ihre eigene Webseite muss mit Advanced Login nicht umständlich an ein fertiges System angepasst werden.

25.05.2012 Madden | Kategorie: PHP/ Kundenverwaltung
BROM CMS/BelCal 3 ansehen BROM CMS/BelCal 3

Spezielles CMS für Betreiber von Ferienwohnungen. Komplette Seitenerstellung online, Verwaltung mehrerer Objekte, Reservierungssystem mit sofortigem Abgleich im Belegungskalender und vieles mehr bietet dieses Content Management System.

25.05.2012 belcal2 | Kategorie: PHP/ CMS
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 11:56 Uhr.