2005-08-18, 16:49
  #1
Medlem
Hejsan jag kör linux på min linux(fedora) server där har jag apache och ett par cs servrar, och nu tänkte jag göra ett litet project där jag ska koda en server panel i php som startar/restartar/stänger av servrarna osv.
Så jag har kommit så långt att jag ska använda shell_exec() och har dessa koder som du ser under...

Kod:
 
#starta_cs.php
<?php
$output = shell_exec("./start_war1");
echo "<pre>$output</pre>";
?> 

Kod:
 
#start_war1
cd /home/srv/servrar/hlds_war1/
./hlds_run -game cstrike +maxplayers 12 -pingboost 2 +port 27015 +map de_inferno -autoupdate


Men med dessa koder så står phpsidan 'starta_cs.php' bara och laddar och laddar, så jag och en annan kille kom fram till att det kan vara så att jag måste starta det i backgrunden så att php scriptet kan gå vidare.
(Comment från php.net)
Kod:
 
#
se.php.net
Not: If you start a program using this function and want to leave it running 
in the background, you have to make sure that the output of that program 
is redirected to a file or some other output stream or else PHP will hang 
until the execution of the program ends.
#

Så jag bytte koden till detta som jag trode gjorde det jag ville + gav mig ett id så jag kunde kontrollera den efter den startats. men det funkar inte får ett id men servern startas inte, kan även med ett annat script kolla id't och det står att processen är igång.
Kod:
#start_cs.php
<?php
//Run linux command in background and return the PID created by the OS
echo run_in_background("./start_war1");
function run_in_background($Command, $Priority = 0)
{
if($Priority)
$PID = shell_exec("nohup nice -n $Priority $Command > /dev/null & echo $!");
else
$PID = shell_exec("nohup $Command > /dev/null & echo $!");
return($PID);
}
?>
Citera
2005-08-21, 21:39
  #2
Medlem
Ledsen för lam stilen.

Men jag måste få detta fixat, ska lämna ifrån mig datorn imorgon och skulle gärna vilja ha fått det här fixat då.

Om ni inte kan shell_exec kanske ni kan nåt annat.
Bara det är ett php script som startar en cs server[ligger på samma dator]. enkelt och bra.

Ska gärna gå att skriva saker i cs fönstret senare typ att processen får ett id lr nåt.
Citera
2005-08-22, 17:42
  #3
Medlem
Geils avatar
shell_exec("cmd /K start c:/sokvag/till/programmet.exe");

skulle fungera i windowsmilj
Citera
2005-08-22, 19:36
  #4
Medlem
ok, men jag kör fedora cora 4[Linux].
Citera
2005-08-23, 00:24
  #5
Medlem
Kollat rättigheterna på filen/filerna så att användaren du kör kan exekvera scriptet?
Citera
2005-08-23, 09:10
  #6
Bannlyst
Du glömde inte chmod +x start_war1?
Citera
2005-08-23, 14:36
  #7
Medlem
ne, ingen skillnad.

ingen som har nåt liknande 'run in background' script?
Citera

Skapa ett konto eller logga in för att kommentera

Du måste vara medlem för att kunna kommentera

Skapa ett konto

Det är enkelt att registrera ett nytt konto

Bli medlem

Logga in

Har du redan ett konto? Logga in här

Logga in