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 06-11-2008, 23:46
Mondmotte
 Newbie
Links : Onlinestatus : Mondmotte ist offline
Registriert seit: Nov 2008
Beiträge: 11
Mondmotte ist zur Zeit noch ein unbeschriebenes Blatt
Standard R-Skript über exec() aufrufen

Ich habe folgendes Problem:
Ich würde gerne von PHP aus ein R Skript aufrufen. Dieses erstellten dann einen Graph, und den wiederum will ich später dem Benutzer anzeigen. Soweit, so gut.
Wenn ich das entsprechende R-Skript über die Shell mit "R --file=script.r" aufrufe, klappt alles wunderbar. Wenn ich genau den gleichen Befehl in PHP über "exec('R --file=script.r')" aufrufe, klappt es leider nur fast. Anscheinend wird das Script aufgerufen, und sogar ein Ausgabebild erstellt, dieses ist nur leider genau 0 Byte groß.
Jetzt weiß ich leider weder, was schief läuft, noch, wie ich das debuggen kann, denn in PHP gibt es keine Fehlermeldungen, was ja auch logisch ist, denn offensichtlich wird das Script ja aufgerufen, es verhält sich nur anders, als wenn ich den Befehl direkt über die Shell eingebe.
Spitze wäre es natürlich, wenn mir jemand direkt das Problem lösen kann, aber ich wäre auch schon sehr zufrieden, wenn mir einer sagt, wie ich sehen kann was auf der Shell bzw. im R-Interpreter nach dem Aufruf abläuft.

Also, wie gesagt der entscheidene PHP-Code ist:


PHP-Code:
exec('R --file=script.r'); 
vielleicht hier noch das R-Script (man weiß ja nie, obwohl es wie gesagt, funktioniert wenn ich es direkt von der Shell aus aufrufe):

PHP-Code:
t<-read.table("/opt/lampp/htdocs/TAVAC/tralala.txt",sep="\t")
m<-as.matrix(t)
m<-m[-1:0,-3:0]
mode(m)<-'numeric'
require(sma)
col.names=t[1,-3:0]
col.names.format=c()
for (
z in c(1:(dim(col.names)[2])))
{
    
l=col.names[z]
    
l=as.character(l[,1])
    
col.names.format=c(col.names.format,l)
}
jpeg(filename "out0.jpeg",width 800height 800)
plot.mat(m,rlabels=t[-1:0,1],clabels=col.names.format)
dev.off() 

Geändert von Mondmotte (06-11-2008 um 23:49 Uhr)
Mit Zitat antworten
  #2 (permalink)  
Alt 07-11-2008, 00:47
pekka
 PHP Master
Links : Onlinestatus : pekka ist offline
Registriert seit: Jun 2001
Ort: Köln
Beiträge: 6.608
pekka befindet sich auf einem aufstrebenden Ast
Standard

WTF ist R?

Die Ausgabe des R-Interpreters kannst du dir in PHP ausgeben lassen. Auf der Manual-Seite zu exec() gibt es in den User Contributed Notes alle Variationen.
Mit Zitat antworten
  #3 (permalink)  
Alt 07-11-2008, 01:22
Mondmotte
 Newbie
Links : Onlinestatus : Mondmotte ist offline
Registriert seit: Nov 2008
Beiträge: 11
Mondmotte ist zur Zeit noch ein unbeschriebenes Blatt
Standard

GNU R ist ein Sprache, die besonders gut für statistische Berechnungen geeignet ist. Vor allem kann sie prima alle Arten von Graphen erstellen. Aber zurück zum Thema

Vielen Dank, ich bin schon ganz gespannt, was da morgen beim Debuggen so ans Tageslicht kommt. Kann es mir bisher echt nicht erklären...
Mit Zitat antworten
  #4 (permalink)  
Alt 07-11-2008, 09:49
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

Das Manual zu exec sagt:
Code:
string exec( string $befehl [, array $ausgabe [, int $return_var]] )
Mit Zitat antworten
  #5 (permalink)  
Alt 07-11-2008, 12:28
Mondmotte
 Newbie
Links : Onlinestatus : Mondmotte ist offline
Registriert seit: Nov 2008
Beiträge: 11
Mondmotte ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Ich hab's jetzt mal versucht, wirklich verstehen tu ich die Sache aber leider immer noch nicht. Die Ausgabe der Shell ist angeblich:

R version 2.6.2 (2008-02-08)
[..]
> t<-read.table("/opt/lampp/htdocs/TAVAC/tralala.txt",sep="\t")
[..]
> jpeg(filename = "out0.jpeg",width = 800, height = 800)
No protocol specified
Fehler in X11(paste("jpeg::", quality, ":", filename, sep = ""), width, :
kann Device JPEG nicht starten
Calls: jpeg
Zusätzlich: Warning message:
In jpeg(filename = "out0.jpeg", width = 800, height = 800) :
konnte Verbindung zu X11 display '' nicht öffnen
Ausführung angehalten

Also, im Klartext: Der Interpreter wird aufgerufen, das Script wird aufgerufen, die Befehle bis zu jpeg() (also derjenige, der die Ausgabedatei öffnet) laufen durch, und dann bricht der Interpreter mit einer - für mich - absolut kryptischen Fehlermeldung ab. Aber gut, da werd ich wohl mal in einem R-Forum nachfragen müssen. Danke euch beiden.
Mit Zitat antworten
  #6 (permalink)  
Alt 07-11-2008, 15:59
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

Jep, das ist ein R-Problem ^^ Vielleicht irgendwelche Konfigurationswerte oder so mitgeben? So rein ins Blaue geraten.
Mit Zitat antworten
  #7 (permalink)  
Alt 08-11-2008, 00:18
Mondmotte
 Newbie
Links : Onlinestatus : Mondmotte ist offline
Registriert seit: Nov 2008
Beiträge: 11
Mondmotte ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Wir arbeiten noch dran. Das wirklich merkwürdige an der Sache ist halt, daß wenn man den Befehl selbst in die Shell eingibt klappt's, wenn man PHP das machen läßt, kommt es zu obigem Problem.
Standardmäßig gibt R sämtlich Graphen direkt am Bildschirm aus, ich vermute, durch den jpg()-Befehl wird dieses Ausgabe lediglich umgeleitet, also nicht unmittelbar als JPEG angelegt, so daß vielleicht trotzdem für das Erstellen auf die Grafikkarte zugegriffen werden muß, was PHP vielleicht nicht erlaubt ist...oder so. Ist alles noch ziemlich unklar.
Klar ist bisher nur, daß auch alle anderen Möglichkeiten, die Grafiken zu speichern, wie png() oder pdf() scheitern, ansonsten aber R wunderbar zu funktionieren scheint.
Mit Zitat antworten
  #8 (permalink)  
Alt 18-11-2008, 01:09
Mondmotte
 Newbie
Links : Onlinestatus : Mondmotte ist offline
Registriert seit: Nov 2008
Beiträge: 11
Mondmotte ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hallo nochmal
Falls es jemanden interssiert:
Das eigentliche Problem konnte ich nicht lösen, aber ich hab einen sehr hilfreichen Hinweis bekommen; es gibt da zwei Projekte, mit denen diese und andere Schwierigkeiten umschifft werden können:
Rserve und
RPHP
Tief versteckt in der Dokumentation zu Letzterem findet sich auch noch der Satz: "Moreover, under UNIX the R's png device uses the X11 driver, which is a problem in ``batch mode'' or for remote operation" Ich denke, das könnte der Grund sein, warum das bei mir nicht geklappt hat ;-)
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

ADSMAN V3 - Werbe-Manager ansehen ADSMAN V3 - Werbe-Manager

ADSMAN V3 - mehr als nur ein Bannermanager! Banner, Textanzeigen und PagePeel Manager! Mit ADSMAN PRO haben Sie die Marketinglösung für eine effektive und effiziente Werbeschaltung mit messbaren Ergebnissen. Unterstützt werden Bannerformate in beliebi

25.10.2018 virtualsystem | Kategorie: PHP/ Bannerverwaltung
PHP News und Artikel Script V2

News schreiben, verwalten, veröffentlichen. Dies ist jetzt mit dem neuen PHP News & Artikel System von virtualsystem.de noch einfacher. Die integrierte Multi-User-Funktion und der WYSIWYG-Editor (MS-Office ähnliche Bedienung) ermöglichen...

25.10.2018 virtualsystem | Kategorie: PHP/ News
Top-Side Guestbook

Gästebuch auf Textbasis (kein MySQL nötig) mit Smilies, Ip Sperre (Zeit selbst einstellbar), Spamschutz, Captcha (Code-Eingabe), BB-Code, Hitcounter, Löschfunktion, Editierfunktion, Kommentarfunktion, Kürzung langer Wörter, Seiten- bzw. Blätterfunktion, V

22.10.2018 webmaster10 | Kategorie: PHP/ Gaestebuch
 Alle PHP Scripte anzeigen

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