29 parent::__construct( $params );
39 $unclaimed =& $this->getQueueData(
'unclaimed', [] );
41 foreach ( $jobs as
$job ) {
42 if (
$job->ignoreDuplicates() ) {
43 $sha1 = sha1( serialize(
$job->getDeduplicationInfo() ) );
44 if ( !isset( $unclaimed[$sha1] ) ) {
45 $unclaimed[$sha1] =
$job;
59 return [
'random',
'timestamp',
'fifo' ];
86 $unclaimed = $this->getQueueData(
'unclaimed' );
88 return $unclaimed ? count( $unclaimed ) : 0;
97 $claimed = $this->getQueueData(
'claimed' );
99 return $claimed ? count( $claimed ) : 0;
112 $unclaimed =& $this->getQueueData(
'unclaimed' );
113 $claimed =& $this->getQueueData(
'claimed', [] );
115 if ( $this->order ===
'random' ) {
116 $key = array_rand( $unclaimed );
118 $key = array_key_first( $unclaimed );
121 $spec = $unclaimed[$key];
122 unset( $unclaimed[$key] );
127 $job->setMetadata(
'claimId', array_key_last( $claimed ) );
142 $claimed =& $this->getQueueData(
'claimed' );
143 unset( $claimed[
$job->getMetadata(
'claimId' )] );
150 if ( isset( self::$data[$this->type][$this->domain] ) ) {
151 unset( self::$data[$this->type][$this->domain] );
152 if ( !self::$data[$this->type] ) {
153 unset( self::$data[$this->type] );
164 $unclaimed = $this->getQueueData(
'unclaimed' );
167 new ArrayIterator( [] );
176 $claimed = $this->getQueueData(
'claimed' );
179 new ArrayIterator( [] );
196 private function &getQueueData( $field, $init =
null ) {
197 if ( !isset( self::$data[$this->type][$this->domain][$field] ) ) {
198 if ( $init !==
null ) {
210class_alias( JobQueueMemory::class,
'JobQueueMemory' );
Convenience class for generating iterators from iterators.
if(count( $args)< 1) $job