X-Git-Url: http://git.cyclocoop.org/?a=blobdiff_plain;f=includes%2FForkController.php;h=05822302efaa58aaebd4fd13d215f6a811266132;hb=87a0fe314942f275ddc6641dbd368df21bb6bad3;hp=2a05411ef2452b0d705143bb40a95a1cd06c5ffb;hpb=cbc5ea8f3b86c5bc7852bd708fc59b918cb40bf9;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/ForkController.php b/includes/ForkController.php index 2a05411ef2..05822302ef 100644 --- a/includes/ForkController.php +++ b/includes/ForkController.php @@ -30,11 +30,11 @@ * @ingroup Maintenance */ class ForkController { - var $children = array(); - var $termReceived = false; - var $flags = 0, $procsToStart = 0; + protected $children = array(), $childNumber = 0; + protected $termReceived = false; + protected $flags = 0, $procsToStart = 0; - static $restartableSignals = array( + protected static $restartableSignals = array( SIGFPE, SIGILL, SIGSEGV, @@ -53,7 +53,7 @@ class ForkController { const RESTART_ON_ERROR = 1; public function __construct( $numProcs, $flags = 0 ) { - if ( php_sapi_name() != 'cli' ) { + if ( PHP_SAPI != 'cli' ) { throw new MWException( "ForkController cannot be used from the web." ); } $this->procsToStart = $numProcs; @@ -121,7 +121,9 @@ class ForkController { if ( function_exists( 'pcntl_signal_dispatch' ) ) { pcntl_signal_dispatch(); } else { - declare (ticks=1) { $status = $status; } + declare( ticks = 1 ) { + $status = $status; + } } // Respond to TERM signal if ( $this->termReceived ) { @@ -135,6 +137,16 @@ class ForkController { return 'done'; } + /** + * Get the number of the child currently running. Note, this + * is not the pid, but rather which of the total number of children + * we are + * @return int + */ + public function getChildNumber() { + return $this->childNumber; + } + protected function prepareEnvironment() { global $wgMemc; // Don't share DB, storage, or memcached connections @@ -164,6 +176,7 @@ class ForkController { if ( !$pid ) { $this->initChild(); + $this->childNumber = $i; return 'child'; } else { // This is the parent process