Re: proc_get_status() not returning correct pid

From: Date: Wed, 02 Aug 2017 21:35:34 +0000
Subject: Re: proc_get_status() not returning correct pid
References: 1 2  Groups: php.general 
Request: Send a blank email to php-general+get-326144@lists.php.net to get a copy of this message
Yes, I missed that. That solved my problem. Thank you! :) On Wed, Aug 2, 2017 at 12:14 PM, Aziz Saleh <azizsaleh@gmail.com> wrote: > > > On Wed, Aug 2, 2017 at 2:52 PM, James Colannino <crankycyclops@gmail.com> > wrote: > >> Hi everyone, >> >> It seems proc_get_status() isn't returning the correct pid when I spawn a >> background php process using proc_open (or at least not the pid I'm >> expecting.) I'm calling it like this (I'll ommit the descriptorspec and >> other parameters for brevity's sake): >> >> $this->process = proc_open( >> 'php worker.php', >> $descriptorspec, >> $pipes, >> $cwd, >> $env >> ); >> >> Later, if I var_dump the output of proc_get_status($this->process), I'll >> get something like this: >> >> array(8) { >> ["command"]=> >> string(14) "php worker.php" >> ["pid"]=> >> int(24173) >> ["running"]=> >> bool(true) >> ["signaled"]=> >> bool(false) >> ["stopped"]=> >> bool(false) >> ["exitcode"]=> >> int(-1) >> ["termsig"]=> >> int(0) >> ["stopsig"]=> >> int(0) >> } >> >> However, when I check on the system as it's running, I see that the above >> pid doesn't belong to the executing php process, but rather to a process >> with the command "sh -c php worker.php." As a result, when I try to kill >> the process, I still have processes with the command "php worker.php" left >> behind (these are backgrounded consumers that are waiting on input they'll >> never receive.) >> >> This is the output of ps aux | grep php as an example: >> >> user+ 24173 0.0 0.0 4508 764 pts/0 S+ 18:51 0:00 sh -c php >> worker.php >> user+ 24174 0.0 0.7 312180 31544 pts/0 S+ 18:51 0:00 php >> worker.php >> >> After running either proc_terminate($this-process) or >> posix_kill(proc_get_status($this->process)['pid'], SIGKILL), I still have >> the following left behind: >> >> user+ 24174 0.0 0.7 312180 31544 pts/0 S+ 18:51 0:00 php >> worker.php >> >> Only the "sh -c php worker.php" process disappears. >> >> Does anyone have an idea of what's going on and how I can get the pid for >> the correct process so I can kill it from inside PHP? >> >> Thanks! >> >> This is on PHP 7.0.21. >> > > Check out the first comment on http://php.net/manual/en/ > function.proc-terminate.php. Seem to have had the same issue as you, > possibly! > >

« previous php.general (#326144) next »