[gelöst] PHP/Perl neuer Prozess, Ausgage umleiten (mpg123)

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
exxecc
Beiträge: 30
Registriert: 24.07.2010 12:32:29
Lizenz eigener Beiträge: MIT Lizenz

[gelöst] PHP/Perl neuer Prozess, Ausgage umleiten (mpg123)

Beitrag von exxecc » 18.08.2012 22:21:15

Hi zusammen

Ich hoffe ich hab hier den richtigen Thread erwischt :oops:

Ich häng gerade vor einem mir scheinbar unlösbaren Problem.

Kurze Erklärung:
Ich hab vor ein kleines Audio-Player Frontend zu basteln, der auf einem Unix-Server (Debian) läuft (der Server gibt Audio wieder).
Das Frontend wird über PHP laufen. Es soll auch möglich sein, Streamadressen abzuspeichern und nach wahl wiederzugeben.
In meinem Fall jetzt 1Live Web MP3 Stream.
Da PHP mittels "exec('mpg123 http://1live.akacast.akamaistream.net/7 ... .net/1live')" die weitere Ausführung stoppt, bis der mpg123 Prozess getötet wird, hab ich mich im Web nach Ausführungsalternativen erkundigt.
Die einzigste funktionierende Lösung ist für mich momentan mittels "exec('perl /pfad/zur/datei.pl')" ein Perl Script auszuführen, was den mpg123 Prozess im Hintergrund ausführt (damit ich mit PHP weiterarbeiten kann):

Code: Alles auswählen

#!/usr/bin/perl

close STDOUT;
close STDERR;
close STDIN;

fork() && exit 0;
`mpg123 http://1live.akacast.akamaistream.net/7/706/119434/v1/gnl.akacast.akamaistream.net/1live 2>&1 /var/www/vhosts/project/system/cmd/result.txt`;
Problem:
Leider wird die Ausgabe nicht in die gewünschte Datei "result.log" umgeleitet.
Ich hab auch schon verschiedene Methoden (2>),(2>&1),(> /var/../.result.log &) ausprobiert, komme aber immer zu der Erkenntniss:
1.) Entweder die Umleitung funktioniert, aber PHP wird in der weiteren Ausführung gestoppt, bis der mpg123 Prozess getötet wird, oder
2.) Die Umelitung funktioniert nicht, aber PHP kann weiter genutzt werden (Der mpg123 Prozess läuft wie gewünscht "nebenbei")

Wie bekommt man es hin, dass ich den mpg123 Prozess nebenbei starten/laufen lassen kann, UND die Ausgabe des mpg123 Prozesses in eine Datei weiterleiten kann, welche ich bei Bedarf mit PHP auslesen kann?

:?:

Viele Grüße
exxecc
Zuletzt geändert von exxecc am 20.08.2012 10:28:49, insgesamt 3-mal geändert.

Benutzeravatar
startx
Beiträge: 3165
Registriert: 07.12.2002 19:29:48
Wohnort: london

Re: Prozess im neuen thread öffnen, Ausgabe des Proz umleite

Beitrag von startx » 18.08.2012 22:52:29

musst du nicht mpg123 erstmal sagen nach stdout zu schreiben bevor du stdout umleitest? also

mpg123 -s <irgendwas>

?

exxecc
Beiträge: 30
Registriert: 24.07.2010 12:32:29
Lizenz eigener Beiträge: MIT Lizenz

Re: Prozess im neuen thread öffnen, Ausgabe des Proz umleite

Beitrag von exxecc » 18.08.2012 23:07:21

Hi

Hmm mit Ausgabe umleiten meinte ich nicht die Musik, welche wie gesagt vom Server ganz normal über das Standart-Soundinterface wiedergegeben wird, sondern viel mehr die Statusinformationen welche mpg123 während der Wiedergabe des Streams vortwährend ausgibt. Zb. Titel/Interpret usw.

Viele Grüße
Exxecc

Cae
Beiträge: 6349
Registriert: 17.07.2011 23:36:39
Wohnort: 2130706433

Re: PHP/Perl neuer Prozess, Ausgage umleiten (mpg123)

Beitrag von Cae » 19.08.2012 19:34:01

Mal als Idee, schmeiß mpg123 weg und verwende Debianmpd, der hat ein Telnet-like Interface, das sich auch prima skripten lässt. Soweit ich weiß kann PHP auch TCP-Sockets aufmachen. Außerdem hast du die potenzielle Möglichkeit, mit dem Webserver auch entfernte mpd-Instanzen zu steuern.

Übrigens ist Pearl und Perl definitiv nicht dasselbe.

Gruß Cae
If universal surveillance were the answer, lots of us would have moved to the former East Germany. If surveillance cameras were the answer, camera-happy London, with something like 500,000 of them at a cost of $700 million, would be the safest city on the planet.

—Bruce Schneier

exxecc
Beiträge: 30
Registriert: 24.07.2010 12:32:29
Lizenz eigener Beiträge: MIT Lizenz

Re: PHP/Perl neuer Prozess, Ausgage umleiten (mpg123)

Beitrag von exxecc » 19.08.2012 20:28:56

Cae hat geschrieben:Übrigens ist Pearl und Perl definitiv nicht dasselbe.
Danke, das war ein Schreibfehler von mir. Ich führe ein "perl"-Script aus.

Die Idee mit "mpd" werde ich mir morgen mal genauer anschauen, auch danke dafür.

Aber wie kann es sein, dass so etwas simples (Script parralel weiterlaufen lassen und Ausgabe umleiten) scheinbar nicht möglich ist?! :x

Viele Grüße
exxecc

cosmac
Beiträge: 4576
Registriert: 28.03.2005 22:24:30

Re: PHP/Perl neuer Prozess, Ausgage umleiten (mpg123)

Beitrag von cosmac » 19.08.2012 21:53:24

hi,
exxecc hat geschrieben:Die Idee mit "mpd" werde ich mir morgen mal genauer anschauen, auch danke dafür.
zum mpd gibt's Debianmpc dazu, damit lässt er sich komplett steuern und auch abfragen. Wenn du also sowieso nur gelegentlich die Daten brauchst, kannst du damit den Umweg über die umgeleitete Datei sparen.
Aber wie kann es sein, dass so etwas simples (Script parralel weiterlaufen lassen und Ausgabe umleiten) scheinbar nicht möglich ist?! :x
PHP halt ;) Wahrscheinlich musst du per exec erstmal eine shell (parallel) starten, die dann ihrerseits das eigentliche Programm startet und dabei die Ausgabeumleitung einrichtet.
Beware of programmers who carry screwdrivers.

exxecc
Beiträge: 30
Registriert: 24.07.2010 12:32:29
Lizenz eigener Beiträge: MIT Lizenz

Re: PHP/Perl neuer Prozess, Ausgage umleiten (mpg123)

Beitrag von exxecc » 20.08.2012 10:28:33

Ganz dumme Geschichte -> die Ausgabe wurde nie umgeleitet weil der Ordner in den ich die Ausgabe weiterleiten wollte keine Schreibrechte für www-data hatte :x
-.-'

Antworten