2005-08-18, 16:49
#1
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...
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)
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.
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);
}
?>