tyfoon
Goto Top

Per PHP einen Shoutcast-Server starten/stoppen

Ja Hallo erstamal face-big-smile ,
Ich habe ein Problem, ...
...einen Shoutcast-Server über PhP zu stoppen

zum starten verwende ich folgenden code:
<?php
<?php
define ('EXEC_TMP_DIR', 'C:\tmp');  

function windExec($cmd,$mode=''){  
   // runs a command line and returns
   // the output even for Wind XP SP2
   // example: $cmd = "fullpath.exe -arg1 -arg2"  
   // $outputString = windExec($cmd, "FG");  
   // OR windExec($cmd);
   // (no output since it runs in BG by default)
   // for output requires that EXEC_TMP_DIR be defined

   // Setup the command to run from "run"  
   $cmdline = "cmd /C $cmd";  

   // set-up the output and mode
   if ($mode=='FG'){  
       $outputfile = EXEC_TMP_DIR . "\\" . time() . ".txt";  
       $cmdline .= " > $outputfile";  
       $m = true;
   }
   else $m = false;

   // Make a new instance of the COM object
   $WshShell = new COM("WScript.Shell");  

   // Make the command window but dont show it.
   $oExec = $WshShell->Run($cmdline, 0, $m);

   if ($outputfile){
       // Read the tmp file.
       $retStr = file_get_contents($outputfile);
       // Delete the temp_file.
       unlink($outputfile);
   }
   else $retStr = "";  

   return $retStr;
} 

windExec("D:\\srv\\scast\\gwp_radio.exe");  
?>
funktioniert auch aber die datei soll öfters mit anderen config files geöffnet werden und auch einzeln beendet werden
ABER WIE?
plz Help
Gruß tyfoon

Content-Key: 47533

Url: https://administrator.de/contentid/47533

Printed on: April 24, 2024 at 10:04 o'clock

Member: Dani
Dani Dec 28, 2006 at 12:56:40 (UTC)
Goto Top
Hi,
}
windExec("D:\\srv\\scast\\gwp_radio.exe");  
?>
Was bewirkt die Zeile ausgelegt auf die Funktion?

function windExec($cmd,$mode=''){  
Warum setzt du dort "mode='' und weiter unten frägst du die Variable ab. Diese IF Entscheidung wird nie zutreffen.
 if ($mode=='FG'){  
...einen Shoutcast-Server über
Was für ein Dienst ist das?

funktioniert auch aber die datei soll
Datei? Du meinst sicher den Dienst.

öfters mit anderen config files geöffnet werden
Du willst einen Dienst mehrmals starten?!


Gruß
Dani
Member: tyfoon
tyfoon Dec 28, 2006 at 13:02:29 (UTC)
Goto Top
KA ich habe das script von php aufgegabelt
http://de2.php.net/function.exec
Member: tyfoon
tyfoon Dec 28, 2006 at 13:05:03 (UTC)
Goto Top
> ...einen Shoutcast-Server über
Was für ein Dienst ist das?

-->Online Radio Server
> funktioniert auch aber die datei soll
Datei? Du meinst sicher den Dienst.

--->genau
> öfters mit anderen config files
geöffnet werden
Du willst einen Dienst mehrmals starten?!

---> Ja z.B. gwp_radio.exe config_1.ini
gwp_radio.exe config_2.ini
gwp_radio.exe config_3.ini
gwp_radio.exe config_4.ini
u.s.w.


Gruß
Dani
Member: SlainteMhath
SlainteMhath Dec 28, 2006 at 14:03:12 (UTC)
Goto Top
öfters mit anderen config
files
geöffnet werden

gwp_radio.exe config_2.ini
gwp_radio.exe config_3.ini
gwp_radio.exe config_4.ini

Also nach kurzen Überfliegen des Scripts sollte das ganz einfach mit

windExec("D:\\srv\\scast\\gwp_radio.exe config_2.ini")

funktionieren.
Member: tyfoon
tyfoon Dec 28, 2006 at 14:19:03 (UTC)
Goto Top
das starten funktoniert ja einwandfrei aber wie soll ich das teil stoppen?
Member: Dani
Dani Dec 28, 2006 at 14:23:52 (UTC)
Goto Top
Hi,
joa...aber es wäre nicht schlecht, wenn man eine Logdatei anlegen würde. Auslesen wäre kein Problem. Aber wenn die Anwendung 2 läuft, steht im TaskManager immer die gleiche exe. Wie also willst du unterscheiden, welche mit welcher config läuft?!


Gruß
Dani
Member: tyfoon
tyfoon Dec 28, 2006 at 14:25:37 (UTC)
Goto Top
Wie also
willst du unterscheiden, welche mit welcher
config läuft?!
Mit PID's und ich weiß net wie ich die erstellen kann
Member: Dani
Dani Dec 28, 2006 at 14:29:08 (UTC)
Goto Top
Hi,
ja schon..jetzt hab ich eine Idee.

Du musst beim starten eine TXT File anlegen (NAme: config_x.txt) dort speicherst du die Pid.
Somit kannst du nachher beim beenden auswählen, welche config und somit kannst du dann die richtige exe killen.


Gruß
DAni
Member: tyfoon
tyfoon Dec 28, 2006 at 14:39:36 (UTC)
Goto Top
so hab ich das auch vor ABER... wie erstelle ich die txt mit der pid?
Member: Dani
Dani Dec 28, 2006 at 14:41:31 (UTC)
Goto Top
Hi,
schau dir mal die Funktionen fopen, fwrite, fclose an.

Dani
Member: tyfoon
tyfoon Dec 28, 2006 at 14:42:21 (UTC)
Goto Top
ok und wie finde ich die pid raus?
Member: SlainteMhath
SlainteMhath Dec 28, 2006 at 14:50:26 (UTC)
Goto Top
ok und wie finde ich die pid raus?
Die steht evtl in $oExec ? Oder Du schaust Dir mal die Doku zu der Funktion COM() an - nachdem die ein WScript.Shell Objekt erstellt, sollte da irdendwo die PID bzw der Handle als Variable/Property verfügbar sein.
Member: Dani
Dani Dec 28, 2006 at 14:53:18 (UTC)
Goto Top
Hi,
da wirst du wohl einen Kl. Batch brauchen. Sprich mit diesem kannst du die DAtei erzeugen!

@ECHO off
FOR /f "tokens=2" %%i IN ('tasklist /svc ^| find "apache.exe"') DO @ECHO %%i  > C:\%config%.txt  

Gruß
Dani
Member: tyfoon
tyfoon Dec 28, 2006 at 15:00:56 (UTC)
Goto Top
ok...
die Pid habe ich herausbekommen
gibt es eine möglichkeit, die Pid aus der bat im Browser anzuzeigen?, sodass ich diese pid in eine Datenbank speichern kann?
Member: Dani
Dani Dec 28, 2006 at 15:04:46 (UTC)
Goto Top
Baller diese doch einfach in ne txt rein. Diese kannst du dann nach Beenden wieder löschen.


Gruß
Dani