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! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 29-10-2007, 23:16
zapate
 Newbie
Links : Onlinestatus : zapate ist offline
Registriert seit: Oct 2007
Beiträge: 9
zapate ist zur Zeit noch ein unbeschriebenes Blatt
Standard PHP/Apache - Performancefrage

Was ist schneller?

Habe folgende Szenario:



1: Es wird eine Grafik dynamisch mit PHP erzeugt. Dabei wir folgendes getan:

Hintergrund wird geladen, Buchstaben (ca. 20) werden per imagettf ins Bild geschrieben


2: Es wird eine Grafik dynamisch mit PHP erzeugt. Dabei wir folgendes getan:

Hintergrund wird geladen, Buchstaben (ca. 20) werden per imagesetpixel in das Bild gemalt. Bei 20 Buchstaben sind dies 200 Aufrufe von imagesetpixel



3: Es wird eine Grafik dynamisch mit PHP erzeugt. Dabei wir folgendes getan:

Hintergrund wird geladen, ca. 20 Buchstaben (gif-Grafiken, 2farbig, transparenter Hintergrund, pro Buchstabe ca. 50 Bytes) per PHP in das Bild eingefügt und über den Hintergrund positioniert.


4. Die 20 Buchstaben (im Verzeichnis abgespeichert) werden per Div über den Hintergrund gelegt.
Der Browser lädt ca. 21 Grafiken inklusive dem Hintergrund.





Was schont den Server am stärksten?

hat ein Server eher mit sehr vielen Anfragen (Variante 4) Probleme?

fällt es PHP schwer mehrere Grafiken zusammen zu basteln (Variante 3)?

fällt es PHP schwer sehr viele einzelne Punkte in ein Bild zu zeichen? (Variante 2)

Ist das rendern von TTF-Fonts extrem serverlastig? (Variante 1)




Ich gehe davon aus, dass das Rendern von TTF-Fonts am serverlastigsten ist, die Punkte malen vermutlich etwas serverfreundlicher.

Wie performant das Übereinanderlegen der Grafiken in PHP selbst ist kann ich nicht einschätzen, genausowenig was es für einen Server bedeutet 20 mal so viele Anfragen wie sonst zu verarbeiten.
Mit Zitat antworten
  #2 (permalink)  
Alt 30-10-2007, 01:06
ghostgambler
 Master
Links : Onlinestatus : ghostgambler ist offline
Registriert seit: Jul 2004
Ort: DE - NRW
Beiträge: 4.620
ghostgambler ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Und können wir auch alle nicht, weil das von Server zu Server unglaublich schwanken kann.
Mach einen Stresstest.
Mit Zitat antworten
  #3 (permalink)  
Alt 30-10-2007, 09:27
PHP-Desaster
 PHP Expert
Links : Onlinestatus : PHP-Desaster ist offline
Registriert seit: Mar 2006
Beiträge: 3.105
PHP-Desaster befindet sich auf einem aufstrebenden Ast
Standard

Ich würde zu Version 1 mit einem Cache erzeugter Bilder tendieren.
Mit Zitat antworten
  #4 (permalink)  
Alt 30-10-2007, 11:11
unset
  Moderator
Links : Onlinestatus : unset ist offline
Registriert seit: Jan 2007
Ort: Düsseldorf
Beiträge: 3.782
unset befindet sich auf einem aufstrebenden Ast
Standard

Ich halte definitiv die erste Variante für am ehesten performant.

Die zweite scheidet für mich aus dem Grund aus, weil ich hier mit PHP eine Logik schreibe, die Buchstaben ins Bild zeichnet. Ich habe aber doch die GDLib, die bereits eine solche Funktion zur Verfügung stellt. Und zwar in C geschrieben.

Die dritte Möglichkeit erscheint mir die ziemlich blödeste Möglichkeit zu sein

Die vierte Möglichkeiten mag den Server evtl. dahingehend entlasten, nicht rumrechnen zu müssen, man muss aber dafür eine handvoll Anfragen mehr bearbeiten. Das geht zwar von Serverseite aus recht flott, sieht im Seitenaufbau dann allerdings wieder Banane aus. Zumal so eine Sache a) ohne Divs gelöst werdne kann und b) trotzdem dicke Suppe gibt.
Mit Zitat antworten
  #5 (permalink)  
Alt 30-10-2007, 12:19
zapate
 Newbie
Links : Onlinestatus : zapate ist offline
Registriert seit: Oct 2007
Beiträge: 9
zapate ist zur Zeit noch ein unbeschriebenes Blatt
Standard

hmm mist variante1 ist die aktuell genutzte die langsam an Ihre Grenzen stößt.

Warum scheidet denn variante 2 aus? Die Funktion imagesetpixel nutzt doch auch die GD-Lib die in C programmiert ist?

der Rest von deinem Post überzeugt wirklich, Variante 3 macht wirklich keinen Sinn und Variante 4 ist nicht gerade die schönste.
Mit Zitat antworten
  #6 (permalink)  
Alt 30-10-2007, 12:34
unset
  Moderator
Links : Onlinestatus : unset ist offline
Registriert seit: Jan 2007
Ort: Düsseldorf
Beiträge: 3.782
unset befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Original geschrieben von zapate
Warum scheidet denn variante 2 aus? Die Funktion imagesetpixel nutzt doch auch die GD-Lib die in C programmiert ist?
Sicher, die PHP-Funktion zum setzen eines Pixels greift auch wieder auf die GDLib zu (die in C geschrieben ist). Allerdings schreibst du die Logik, wo die einzelnen Pixel zu setzen sind ja in PHP. Was aus dem Grund sinnlos ist, da die GDLib eine Funktion zum Zeichnen von Buchstaben ja bereits mitbringt. Zumal du mit dem Default-Font ja locker hinkommst (du willst ja offensichtlich mehr als rudimentäre gezeichnete Zeichen nutzen).

Aber denk doch evtl. mal über das chachen von bereits generierten Bildern nach. Evtl. kannst du ja auch den konkreten Einsatzzweck nennen, vielleicht fällt den Leuten hier eine (oder mehr) weitere Variante ein.
Mit Zitat antworten
  #7 (permalink)  
Alt 30-10-2007, 12:41
zapate
 Newbie
Links : Onlinestatus : zapate ist offline
Registriert seit: Oct 2007
Beiträge: 9
zapate ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Es wird bereits gecached:

PHP-Code:
      $filetime=filemtime('temp/'.$id.'.png')+60*20;
      if(!
$filetime OR $filetime<=time() )
         {

            
header("Content-type: image/png");

            
$im    imagecreatefrompng('images/'.$_GET['stil'].'.png');
            
$color imagecolorallocate($im255255255);

            if(
$_GET['stil']=="88_15")
               {

                  
$font 'font.ttf';

                  
$color imagecolorallocate($im000);
                  
imagettftext($im60810$color$font"VISITS: ".$data['gesamt']);

               }
            else
               {
                  if(
$_GET['stil']=='white' OR $_GET['stil']=='yellow' OR $_GET['stil']=='lightgrey')
                     {
                        
$color imagecolorallocate($im000);
                     }
                  
$font 'font.ttf';

                  
imagettftext($im604418$color$font$data['heute']);
                  
imagettftext($im604427$color$font$data['gestern']);
                  
imagettftext($im604436$color$font$data['gesamt']);
                  
imagettftext($im604445$color$font$online['count']);

               }



            
imagepng($im);
            
imagepng($im,'temp/'.$id.'.png');
            
imagedestroy($im);
         }

      else
         {
            
header('Location: '.'temp/'.$id.'.png');
         } 
Mit Zitat antworten
  #8 (permalink)  
Alt 30-10-2007, 12:51
unset
  Moderator
Links : Onlinestatus : unset ist offline
Registriert seit: Jan 2007
Ort: Düsseldorf
Beiträge: 3.782
unset befindet sich auf einem aufstrebenden Ast
Standard

Wenn ich das richtig sehe, werden die generierten Bilder aber "nur" für 20 zwischengespeichert. Ich nehme doch mal an, dass du die Daten aus einer Datenbank holst. So kannst du doch auch ermitteln, ob seit der letzten generierung der Grafik eine Änderung stattgefunden hat. Und nur in dem Fall würde ich eine Neue zusammenschustern.

Und: Sehe ich das auch richtig, dass du prüfst, ob Der Zeitstempel der Datei plus 20 Minuten KLEINER als die aktuelle Zeit ist?
Mit Zitat antworten
  #9 (permalink)  
Alt 30-10-2007, 12:54
zapate
 Newbie
Links : Onlinestatus : zapate ist offline
Registriert seit: Oct 2007
Beiträge: 9
zapate ist zur Zeit noch ein unbeschriebenes Blatt
Standard

ja zeitstempel + 20 minuten < aktuelle zeit.


zeitstempel: 12:46 uhr + 20 minuten

13:06 <= 12:46 FALSE

in dem fall redirect zum gecachtem bild
Mit Zitat antworten
  #10 (permalink)  
Alt 30-10-2007, 12:56
unset
  Moderator
Links : Onlinestatus : unset ist offline
Registriert seit: Jan 2007
Ort: Düsseldorf
Beiträge: 3.782
unset befindet sich auf einem aufstrebenden Ast
Standard

Haha, wusste ich doch, dass ich nen Denkfehler gemacht hab. Sorry, sitz hier grad selbst vor nem kniffligen Problemchen
Mit Zitat antworten
  #11 (permalink)  
Alt 30-10-2007, 13:03
PHP-Desaster
 PHP Expert
Links : Onlinestatus : PHP-Desaster ist offline
Registriert seit: Mar 2006
Beiträge: 3.105
PHP-Desaster befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
hmm mist variante1 ist die aktuell genutzte die langsam an Ihre Grenzen stößt.
Warum das? Was ist mit dem Skript? Alle 20 Minuten ein Bildchen malen sollte absolut kein Problem darstellen!
Mit Zitat antworten
  #12 (permalink)  
Alt 30-10-2007, 13:20
zapate
 Newbie
Links : Onlinestatus : zapate ist offline
Registriert seit: Oct 2007
Beiträge: 9
zapate ist zur Zeit noch ein unbeschriebenes Blatt
Standard

es gibt mehrere user, für jeden user werden alle 20 minuten ein bild erzeugt.

Der Ordner temp enthält gegen 20 uhr ca. 6000 Bilder. Vielleicht bremst das den Server?
Mit Zitat antworten
  #13 (permalink)  
Alt 30-10-2007, 13:52
Benutzerbild von onemorenerd onemorenerd
  Moderator
Links : Onlinestatus : onemorenerd ist offline
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.471
onemorenerd wird schon bald berühmt werdenonemorenerd wird schon bald berühmt werden
Standard

Auf jeden Fall wirds problematisch, wenn die Anzahl der User steigt.

Müssen es denn unbedingt Bilder sein? Was machst du da eigentlich?
Mit Zitat antworten
  #14 (permalink)  
Alt 30-10-2007, 14:00
zapate
 Newbie
Links : Onlinestatus : zapate ist offline
Registriert seit: Oct 2007
Beiträge: 9
zapate ist zur Zeit noch ein unbeschriebenes Blatt
Standard

sieht man das nicht? ich biete einen counterservice an :-)
Mit Zitat antworten
  #15 (permalink)  
Alt 30-10-2007, 14:03
unset
  Moderator
Links : Onlinestatus : unset ist offline
Registriert seit: Jan 2007
Ort: Düsseldorf
Beiträge: 3.782
unset befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Original geschrieben von onemorenerd
Müssen es denn unbedingt Bilder sein?
Die Frage stelle ich mir auch, weil ja offensichtlich auch die Option, die Chars als einzelne Grafiken vor den Hintergrund zu klatschen in Betracht gezogen wurde.

Wie dem auch sei. Ich denke, man kann durch einen simplen Vergleich zu 100% feststellen, ob die Daten im zwischengespeicherten Bild noch aktuell sind oder nicht, und dahingehend entweder die zwischengespeicherte Grafik ausgeben oder eine neue generieren.
Mit Zitat antworten
Antwort

Lesezeichen


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

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

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

ebiz-trader 6.0 - Das professionelle PHP Marktplatz Script ansehen ebiz-trader 6.0 - Das professionelle PHP Marktplatz Script

Mit unserer Lösungen können Sie nahezu jeden B2B / B2C Marktplatz betreiben den Sie sich vorstellen können. Ganz egal ob Sie einen Automarktplatz, Immobilenportal oder einfach einen Anzeigenmarkt betreiben möchten. Mit ebiz-trader können Sie Ihre Anforder

11.10.2018 Berni | Kategorie: PHP/ Anzeigenmarkt
PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
PHP WEB STATISTIK ansehen PHP WEB STATISTIK

Die PHP Web Statistik bietet Ihnen ein einfach zu konfigurierendes Script zur Aufzeichnung und grafischen und textuellen Auswertung der Besuchern Ihrer Webseite. Folgende zeitlichen Module sind verfügbar: Jahr, Monat, Tag, Wochentag, Stunde Folgende son

28.08.2018 phpwebstat | Kategorie: PHP/ Counter
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 01:51 Uhr.