Pool::collect

(PECL pthreads >= 2.0.0)
Collect references to completed tasks
public void Pool::collect ( Callable $collector )

Allows the Pool to collect references determined to be garbage by the given collector

Parameters:
collector

A Callable collector

Returns:

void

Examples:
Creating Pools
<?php
class MyWork extends Stackable {
    public function __construct() {
        $this->complete = false;
    }

    public function run() {
        printf(
            "Hello from %s in Thread #%lu\n", 
            __CLASS__, $this->worker->getThreadId());
        $this->complete = true;
    }

    public function isComplete() { 
        return $this->complete; 
    }

    protected $complete;
}

class MyWorker extends Worker {
    
    public function __construct(Something $something) {
        $this->something = $something;
    }
    
    public function run() {
        /** ... **/
    }
}

$pool = new Pool(8, \MyWorker::class, [new Something()]);
$pool->submit(new MyWork());

usleep(1000);

$pool->collect(function($work){
    return $work->isComplete();
});
var_dump($pool);
?>

The above example will output:

Hello from MyWork in Thread #140222468777728
object(Pool)#1 (6) {
  ["size":protected]=>
  int(8)
  ["class":protected]=>
  string(8) "MyWorker"
  ["workers":protected]=>
  array(1) {
    [0]=>
    object(MyWorker)#4 (1) {
      ["something"]=>
      object(Something)#5 (0) {
      }
    }
  }
  ["work":protected]=>
  array(0) {
  }
  ["ctor":protected]=>
  array(1) {
    [0]=>
    object(Something)#2 (0) {
    }
  }
  ["last":protected]=>
  int(1)
}
doc_php
2016-02-24 16:05:30
Comments
Leave a Comment

Please login to continue.