php.de

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

PHP-Fortgeschrittene Arbeiten mit PHP ohne Einschränkungen

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 08.02.2010, 16:31  
Erfahrener Benutzer
 
Registriert seit: 17.07.2006
Beiträge: 140
louis
Standard [Erledigt] Parameterübergabe an jpgraph

Hallo zusammen,

ich möchte mit jpgraph dynamisch Bilderchen erstellen. Jedoch möchte ich die Daten nicht in dem Script aus der Datenbank holen, dass das eigentliche Bild erzeugt, sondern von aussen übergeben. Der Grund dafür ist, dass ich die Daten auch auf der Seite selbst, auf der auch die Grafik dargestellt wird, benötige und ich die DB-Abfrage nicht zweimal machen möchte. Des weiteren finde ich es designtechnisch nicht schön, eine DB Abfrage in den Code zur Bildgenerierung zu stopfen.

Zitat:
Zitat von jpgraph Doku
<img src="showgraph.php?a=1&b=2">
This could for example be used to control the apperance of the image or perhaps send data to the image which will be displayed. Note that this is probably not the best way to send large amount of data to plot. Instead the only practical way, for large data sizes, is to get all the data in the image script, perhaps from a DB.
Der hier vorgeschlagene Weg ist natürlich mittels http_build_query auch für arrays und Objekte möglich, jedoch stoße ich bei meinem Vorhaben an die maximal erlaubte Länge für eine URL.

Deshalb meine Frage: welche anderen Methoden bieten sich hier an?

Möglich wäre eine Lösung über Sessions. Zum finde ich es aber nicht so schick, so viele Daten in die Session zu blasen, zum anderen soll meine Anwendung quasi als Plugin in einer anderen Anwendung laufen, in der aber schon eine Session benutzt wird...der möchte ich ebenfalls nicht in die Quere kommen. Diese Session mitzubenutzen widerstrebt mir ebenfalls...

Eine weitere Möglichkeit wäre die Parameterübergabe mittels eines Post Requests. Wie jedoch soll das in der obigen Form (über das img Tag) funktionieren? Oder muss man sich da irgendetwas mittels Curl und Konsorten selbst zusammenbauen? Hat hier schon jemand Erfahrungen sammeln können? Ich habe im Web nicht wirklich viel aussagekräftiges im Zusammenhang mit jpgraph gegfunden.

Eine andere Idee, die mir in den Sinn gekommen ist, wäre die Daten irgendwie "global" in dem Script verfügbar zu machen, das die Grafik erzeugt, z.B. über ein statisches Objekt...würde das klappen? Wie ist es eigentlich mit dem Geltungsbereich in einem solchen Script, das eine Grafik erzeugt? Prinzipiell liegt der doch meiner Ansicht nach komplett ausserhalb des eigentlichen Geltungsbereichs, in dem der HTML Code mit dem img-Tag eingebunden ist...aber vielleicht gibt es hier ja Möglichkeiten, die ich nicht kenne?

Code habe ich aktuell noch keinen, ich hoffe, dass jemand schonmal vor dem gleichen Problem gestanden war und mir wertvolle Hinweise geben kann.
__________________
mfg louis
louis ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 08.02.2010, 20:02  
Moderator
 
Benutzerbild von robo47
 
Registriert seit: 03.09.2004
Beiträge: 11.798
PHP-Kenntnisse:
Fortgeschritten
robo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblick
Standard

Was musst du denn dem script alles übergeben ?
Und um was für Bilder geht es ?
Sind das User-spezifische daten die sich sofort wieder ändern ? Oder sind die "länger" und für mehrere User gültig ?

Wäre der Ansatz andersherum vielleicht möglich, dass du im Hauptscript das Bild generierst und der image-tag dann direkt auf das generiete Bild zeigt ?

Oder die Alternative zu zu vielen Parametern wäre dass du die ganzen infos die du brauchst serverseitig in einer Datei oder in der Datenbank speicherst und dein Script das den Graph erzeugt bekommt nur die ID übergeben wo in der Datenbank oder in welcher Datei es die Angaben findet.
robo47 ist offline   Mit Zitat antworten
Alt 09.02.2010, 07:58  
Erfahrener Benutzer
 
Registriert seit: 17.07.2006
Beiträge: 140
louis
Standard

Hi,

Zitat:
Zitat von robo47 Beitrag anzeigen
Was musst du denn dem script alles übergeben ?
Und um was für Bilder geht es ?
Sind das User-spezifische daten die sich sofort wieder ändern ? Oder sind die "länger" und für mehrere User gültig ?
Es handelt sich um ca. 500 statistische Wertepaare, ich müsste dem Skript also prinzipiell ein array mit diesen Wertepaaren übergeben. Leider sind die Werte nicht statisch, prinzipiell können bei jedem Aufruf andere Wertepaare ins Spiel kommen.

Zitat:
Zitat von robo47 Beitrag anzeigen
Wäre der Ansatz andersherum vielleicht möglich, dass du im Hauptscript das Bild generierst und der image-tag dann direkt auf das generiete Bild zeigt ?
Hmmm...dann müsste ich das Bild im Dateisystem cachen. Da die Wahrscheinlichkeit, dass zweimal das gleiche Bild benötigt wird, mehr oder weniger gegen Null geht, wäre das auch nicht so sinnvoll. Ich könnte allerdings einen Cronjob schreiben, der alle Nase lang mal das Verzeichnis mit den Bildern löscht...wäre zumindest eine Möglichkeit.

Zitat:
Zitat von robo47 Beitrag anzeigen
Oder die Alternative zu zu vielen Parametern wäre dass du die ganzen infos die du brauchst serverseitig in einer Datei oder in der Datenbank speicherst und dein Script das den Graph erzeugt bekommt nur die ID übergeben wo in der Datenbank oder in welcher Datei es die Angaben findet.
Ja das ist auch eine Idee, die Daten für das "Bildscript" persistent zur Verfügung zu stellen. Erzeugt aber genau wie dein obiger Vorschlag einen Overhead, den ich eigentlich vermeiden wollte.

Vielen Dank schonmal für deine Ideen, das bringt mich schonmal ein Stück weiter

Um nochmal auf meine Idee zurückzukommen, die Daten "global" verfügbar zu machen...würde es prinzipiell funktionieren, im "Hauptscript" ein Objekt zu deklarieren, diesem Objekt ein statisches Array als Attribut zu verpassen, dieses zu füllen und dann im "Bildscript" die Klasse per include bekannt zu machen und dann darauf zuzugreifen...eine Art "Singelton"?
__________________
mfg louis
louis ist offline   Mit Zitat antworten
Alt 09.02.2010, 13:42  
¯\_(ツ)_/¯
 
Benutzerbild von Flor1an
 
Registriert seit: 18.06.2008
Beiträge: 8.814
PHP-Kenntnisse:
Fortgeschritten
Flor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer Anblick
Standard

Nein das ist so nicht möglich. Du hast zwei verschiedene HTTP Requests, daher die beiden haben nichts miteinander zutun, können sich also auch keine Objekte oder sonstige Variablen teilen (außer in der Session).

Ich seh bei dir eigentlich nur ein paar Möglichkeiten die aber alle auf das selbe abzielen. Und zwar das speichern der Wertepaare bis das Bild generiert wird.

Folgende Möglichkeiten würden mir einfallen:
Datenbank: Vorteil du könntest die Daten theoretisch beliebig lange vorhalten. Möchte man das Bild also auf einer fremden Seite einbinden wollen (Forum als Signatur zum Beispiel) wäre es so eben möglich die Werte einmal zu generieren und dann das Bild mit einer ID aufrufen. Der eine zusätzliche DB Query würde ich da jetzt nicht als all zu großen Overhead sehen. Ist ja auch ein neue HTTP Request.

Session: Wäre natürlich sehr einfach umzusetzen. Problem ist aber dass das Bild eben IMMER in deiner Webseite angezeigt werden muss. Denn sonst würde ja die Session nicht gefüllt werden können. Ein Einbinden in externe Webseiten wird also unmöglich.

Memcache oder ähnliches: Du könntest anstatt in der Datenbank/Session die Daten auch in Memcache speichern und ebenfalls eine ID an das Bild übergeben. Spart dir den DB Aufruf beim generieren des Bildes, hat aber das selbe Problem wie die Session. Denn die Daten wirst du sicherlich nicht ewig im Arbeitsspeicher halten können. (Absturz, Restart, RAM voll)

Ansonsten könnte man sich auch noch Kombinationen überlegen. Du speicherst die Daten in die Session und wenn das Bild aufgerufen wird schaut es ob in der Session die Werte stehen, wenn ja -> Bild generieren wenn nicht dann schauste die Werte in der Datenbank nach. Somit sparst du dir beim Aufruf deiner Seite einen Query, beim Aufruf durch externe Webseiten geht es aber trotzdem.
Flor1an ist offline   Mit Zitat antworten
Alt 09.02.2010, 14:18  
Erfahrener Benutzer
 
Registriert seit: 17.07.2006
Beiträge: 140
louis
Standard

Zitat:
Zitat von Flor1an Beitrag anzeigen
Nein das ist so nicht möglich. Du hast zwei verschiedene HTTP Requests, daher die beiden haben nichts miteinander zutun, können sich also auch keine Objekte oder sonstige Variablen teilen (außer in der Session).
Jo...das habe ich befürchtet, aber ich dachte mir, ich frage sicherheitshalber nochmal nach
Zitat:
Zitat von Flor1an Beitrag anzeigen
Session: Wäre natürlich sehr einfach umzusetzen. Problem ist aber dass das Bild eben IMMER in deiner Webseite angezeigt werden muss. Denn sonst würde ja die Session nicht gefüllt werden können. Ein Einbinden in externe Webseiten wird also unmöglich.
Dass das Bild nur auf dem gleichen Server verfügbar wäre, wäre kein Problem. Ich traue es mich fast nicht zu sagen, aber das "Umbrellasystem" wäre ein phpBB2 (bitte nicht schlagen ). Keine Ahnung, ob das Sessionmanagement im phpBB2 was taugt und wie genau das implementiert ist. Irgendwie habe ich da ein bisschen Respekt vor Oder wäre es aus euerer Sicht problemlos, einfach eine zweite Session zu initiieren?

Zitat:
Zitat von Flor1an Beitrag anzeigen
Memcache oder ähnliches: Du könntest anstatt in der Datenbank/Session die Daten auch in Memcache speichern und ebenfalls eine ID an das Bild übergeben. Spart dir den DB Aufruf beim generieren des Bildes, hat aber das selbe Problem wie die Session. Denn die Daten wirst du sicherlich nicht ewig im Arbeitsspeicher halten können. (Absturz, Restart, RAM voll)
An memcache habe ich auch schon gedacht, aber leider wird das ganze bei einem Hoster laufen, bei dem ich nicht auf memcache zugreifen kann.
__________________
mfg louis
louis ist offline   Mit Zitat antworten
Alt 09.02.2010, 17:16  
¯\_(ツ)_/¯
 
Benutzerbild von Flor1an
 
Registriert seit: 18.06.2008
Beiträge: 8.814
PHP-Kenntnisse:
Fortgeschritten
Flor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer Anblick
Standard

Wenn du Sessions nutzt wirst du das Bild auch nur auf der Webseite einbinden können die die Daten in die Session schreibt. Das Bild kannst du nirgendwo anders anzeigen lassen! Ich weiß nicht wofür genau du das Bild generieren möchtest aber das einbinden des Bildes irgendwo anders als bei dem Skript das die Werte in die Session schreibt ist eigentlich nicht möglich.

Also ich würde die Variante mit der Datenbank machen. Der eine Query ist kaum ein Overhead.
Flor1an ist offline   Mit Zitat antworten
Alt 09.02.2010, 18:33  
Erfahrener Benutzer
 
Registriert seit: 17.07.2006
Beiträge: 140
louis
Standard

Ja der Umweg über eine Datenbank erscheint mir auch am sinnvollsten...ich werde einfach das Array per serialize in die DB packen und im Imagescript über die übergebene ID wieder auslesen.

Danke für die Gedankenanstöße!
__________________
mfg louis
louis 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
[Erledigt] jpgraph - gnu/gpl alternative (diagramm aus db erstellen) taurus PHP Tipps 2009 6 11.08.2009 09:24
jpgraph x-achse "dynamisch" beschriften EDDI84 PHP Tipps 2009 7 09.07.2009 16:53
JpGraph und PHP-Version LuZa PHP-Fortgeschrittene 5 15.06.2009 11:51
JPGraph: Legend: Formatierung SvenLittkowski PHP-Fortgeschrittene 0 09.03.2009 23:56
jpgraph Wallma PHP-Fortgeschrittene 1 16.07.2008 18:25
[Erledigt] jpgraph PHP-Fortgeschrittene 21 20.01.2006 21:43
JpGraph Installation Loenne PHP Tipps 2006 38 11.01.2006 19:46
Skalierung der y-Achse bei JPGraph PHP Tipps 2006 2 05.01.2006 21:02
JpGraph 2.x und PHP5 PHP Tipps 2005-2 5 31.08.2005 12:58
jpgraph x- y- achse dynamisch beschriften PHP Tipps 2005 5 29.04.2005 10:49
jpgraph: wie kann ich Variablen anzeigen lassen ? PHP Tipps 2005 3 25.04.2005 21:48
JPGraph will nicht PHP Tipps 2005 3 18.01.2005 10:21
jpgraph diagramm- erstellung nach anleitung PHP Tipps 2005 6 02.01.2005 21:55
[Erledigt] Hinweis: PHP 5 und JpGraph PHP-Fortgeschrittene 1 19.07.2004 19:00
[Erledigt] schwarzes rechteck beim jpgraph - probleme mit gd PHP Tipps 2004 0 02.07.2004 17:28

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
jpgraph werte übergeben, jpgraph parameter übergeben, jpgraph parameter, jpgraph daten übergeben, http://www.php.de/php-fortgeschrittene/64376-erledigt-parameteruebergabe-jpgraph.html, jpgraph variable übergeben, jpgraph session, jpgraph session variable, jpgraph parameterübergabe, jpgraph einbinden, jpgraph dynamisch, jpgraph doku, jpgraph img tag, jpgraph array übergeben, jpgraph zu viele daten, parameter an jpgraph, jpgraph post request, jpgraph dasselbe bild, jpgraph get daten übergeben, wie jpgraph in eigene scripte einbinden

Alle Zeitangaben in WEZ +1. Es ist jetzt 16: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