Page Menu
Home
Phorge
Search
Configure Global Search
Log In
Files
F9787658
ProcessControl.php
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Flag For Later
Award Token
Size
4 KB
Referenced Files
None
Subscribers
None
ProcessControl.php
View Options
<?php
/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
/**
* A class for monitoring and terminating processes
*
* PHP version 5
*
* LICENSE:
*
* This library is free software; you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as
* published by the Free Software Foundation; either version 2.1 of the
* License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
* @category Encryption
* @package Crypt_GPG
* @author Michael Gauthier <mike@silverorange.com>
* @copyright 2013 silverorange
* @license http://www.gnu.org/copyleft/lesser.html LGPL License 2.1
* @version CVS: $Id$
* @link http://pear.php.net/package/Crypt_GPG
*/
// {{{ class Crypt_GPG_ProcessControl
/**
* A class for monitoring and terminating processes by PID
*
* This is used to safely terminate the gpg-agent for GnuPG 2.x. This class
* is limited in its abilities and can only check if a PID is running and
* send a PID SIGTERM.
*
* @category Encryption
* @package Crypt_GPG
* @author Michael Gauthier <mike@silverorange.com>
* @copyright 2013 silverorange
* @license http://www.gnu.org/copyleft/lesser.html LGPL License 2.1
* @link http://pear.php.net/package/Crypt_GPG
*/
class
Crypt_GPG_ProcessControl
{
// {{{ protected properties
/**
* The PID (process identifier) being monitored
*
* @var integer
*/
protected
$pid
;
// }}}
// {{{ __construct()
/**
* Creates a new process controller from the given PID (process identifier)
*
* @param integer $pid the PID (process identifier).
*/
public
function
__construct
(
$pid
)
{
$this
->
pid
=
$pid
;
}
// }}}
// {{{ public function getPid()
/**
* Gets the PID (process identifier) being controlled
*
* @return integer the PID being controlled.
*/
public
function
getPid
()
{
return
$this
->
pid
;
}
// }}}
// {{{ isRunning()
/**
* Checks if the process is running
*
* Uses <kbd>ps</kbd> on UNIX-like systems and <kbd>tasklist</kbd> on
* Windows.
*
* @return boolean true if the process is running, false if not.
*/
public
function
isRunning
()
{
$running
=
false
;
if
(
PHP_OS
===
'WINNT'
)
{
$command
=
'tasklist /fo csv /nh /fi '
.
escapeshellarg
(
'PID eq '
.
$this
->
pid
);
$result
=
exec
(
$command
);
$parts
=
explode
(
','
,
$result
);
$running
=
(
count
(
$parts
)
>
1
&&
trim
(
$parts
[
1
],
'"'
)
==
$this
->
pid
);
}
else
{
$result
=
exec
(
'ps -p '
.
escapeshellarg
(
$this
->
pid
)
.
' -o pid='
);
$running
=
(
trim
(
$result
)
==
$this
->
pid
);
}
return
$running
;
}
// }}}
// {{{ terminate()
/**
* Ends the process gracefully
*
* The signal SIGTERM is sent to the process. The gpg-agent process will
* end gracefully upon receiving the SIGTERM signal. Upon 3 consecutive
* SIGTERM signals the gpg-agent will forcefully shut down.
*
* If the <kbd>posix</kbd> extension is available, <kbd>posix_kill()</kbd>
* is used. Otherwise <kbd>kill</kbd> is used on UNIX-like systems and
* <kbd>taskkill</kbd> is used in Windows.
*
* @return void
*/
public
function
terminate
()
{
if
(
function_exists
(
'posix_kill'
))
{
posix_kill
(
$this
->
pid
,
15
);
}
elseif
(
PHP_OS
===
'WINNT'
)
{
exec
(
'taskkill /PID '
.
escapeshellarg
(
$this
->
pid
));
}
else
{
exec
(
'kill -15 '
.
escapeshellarg
(
$this
->
pid
));
}
}
// }}}
}
// }}}
?>
File Metadata
Details
Attached
Mime Type
text/x-php
Expires
Tue, Aug 18, 7:15 AM (1 d, 2 h)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
1256296
Default Alt Text
ProcessControl.php (4 KB)
Attached To
Mode
R3 roundcubemail
Attached
Detach File
Event Timeline
Log In to Comment