Reputation: 334
I have a problem in php/linux, described below:
I have to execute a linux command through shell_exec (plesk cli command subscription webspace-off).
The problem is when i do this from php it works, but restarts apache, that resulting in a blank page, while apache restarts.
To get rid of the problem i have to call that shell_exec in background, with a delay (Expected result: the web page loads, and after 4 sec. runs the linux script.)
I have done some tryings like:
shell_exec("sleep 4 && /var/www/vhosts/site.com/httpdocs/wrapper2 3 --webspace-off ".$domain_name." &");
but php will wait for response.
Somehow i need to sleep the execution of a linux command , and all this has to run in bg., and dont wait for response.
Thanks
Upvotes: 6
Views: 6575
Reputation: 206689
You should try using exec
rather than shell_exec
, and redirect all output to /dev/null
. Something like:
exec("(sleep 4 && ... --webspace-off ".$domain_name.") > /dev/null 2>&1 &");
(Note the ()
around the commands: you need to catch the output stream of both sleep
and your wrapper.)
Edit: and make real sure that you validate $domain_name
. Without validation and with
$domain_name = "; rm -rf ...";
you're in trouble...
Upvotes: 10