protected function process_work_unit($bucket = self::DEFAULT_BUCKET)
	{
		$child_work_units = array_splice($this->work_units[$bucket], 0, $this->max_work_per_child[$bucket]);

		if ($this->child_persistent_mode[$bucket])
		{
			$data = isset($this->child_persistent_mode_data[$bucket]) ? $this->child_persistent_mode_data[$bucket] : null;
			$this->fork_work_unit($data, '', $bucket);
		}
		elseif (count($child_work_units) > 0)
		{
			if ($this->child_single_work_item[$bucket])
			{
				// break out identifier and unit
				$child_identifier = key($child_work_units);
				$child_work_unit = current($child_work_units);
				next($child_work_units);

				// strip preceeding 'id-' from the identifier
				if (strpos($child_identifier, 'id-') === 0)
				{
					$child_identifier = substr($child_identifier, 3);
				}

				// process work unit
				$this->fork_work_unit(array($child_work_unit, $child_identifier), $child_identifier, $bucket);
			}
			else
			{
				$this->fork_work_unit(array($child_work_units), '', $bucket);
			}
		}

		// Poll for results from children
		$this->post_results($bucket);
	}
protected function process_work_unit($bucket = self::DEFAULT_BUCKET)
	{
		$child_work_units = array_splice($this->work_units[$bucket], 0, $this->max_work_per_child[$bucket]);

		if ($this->child_persistent_mode[$bucket])
		{
			$data = isset($this->child_persistent_mode_data[$bucket]) ? $this->child_persistent_mode_data[$bucket] : null;
			$this->fork_work_unit($data, '', $bucket);
		}
		elseif (count($child_work_units) > 0)
		{
			if ($this->child_single_work_item[$bucket])
			{
				// break out identifier and unit
				$child_identifier = key($child_work_units);
				$child_work_unit = current($child_work_units);
				next($child_work_units);

				// strip preceeding 'id-' from the identifier
				if (strpos($child_identifier, 'id-') === 0)
				{
					$child_identifier = substr($child_identifier, 3);
				}

				// process work unit
				$this->fork_work_unit(array($child_work_unit, $child_identifier), $child_identifier, $bucket);
			}
			else
			{
				$this->fork_work_unit(array($child_work_units), '', $bucket);
			}
		}

		// Poll for results from children
		$this->post_results($bucket);
	}
protected function process_work_unit ( $ bucket = self :: DEFAULT_BUCKET ) { $ child_work_units = array_splice ( $ this -> work_units [ $ bucket ] , 0 , $ this -> max_work_per_child [ $ bucket ] ) ; if ( $ this -> child_persistent_mode [ $ bucket ] ) { $ data = isset ( $ this -> child_persistent_mode_data [ $ bucket ] ) ? $ this -> child_persistent_mode_data [ $ bucket ] : null ; $ this -> fork_work_unit ( $ data , '' , $ bucket ) ; } elseif ( count ( $ child_work_units ) > 0 ) { if ( $ this -> child_single_work_item [ $ bucket ] ) { // break out identifier and unit $ child_identifier = key ( $ child_work_units ) ; $ child_work_unit = current ( $ child_work_units ) ; next ( $ child_work_units ) ; // strip preceeding 'id-' from the identifier if ( strpos ( $ child_identifier , 'id-' ) === 0 ) { $ child_identifier = substr ( $ child_identifier , 3 ) ; } // process work unit $ this -> fork_work_unit ( array ( $ child_work_unit , $ child_identifier ) , $ child_identifier , $ bucket ) ; } else { $ this -> fork_work_unit ( array ( $ child_work_units ) , '' , $ bucket ) ; } } // Poll for results from children $ this -> post_results ( $ bucket ) ; }
Pulls items off the work queue for processing

Process the work queue by taking up to max_work_per_child items
off the queue. A new child is then spawned off to process the
work.

@param int $bucket The bucket to use.
@return void
Pulls items off the work queue for processing