> php教程 > PHP源码 > 非常实用的PHP 多线程,线程池例子

非常实用的PHP 多线程,线程池例子

PHP中文网
풀어 주다: 2016-05-25 16:59:02
원래의
1057명이 탐색했습니다.


<?php
/*
 * Homepage http://netkiller.github.io
 * Author: netkiller*/
class ExampleWorker extends Worker {

	public function __construct(Logging $logger) {
		$this->logger = $logger;
	}

	protected $logger;	
}

/* the collectable class implements machinery for Pool::collect */
class Work extends Stackable {
	public function __construct($number) {
		$this->number = $number;
	}
	public function run() {
		$this->worker
			->logger
			->log("%s executing in Thread #%lu",
				  __CLASS__, $this->worker->getThreadId());
		sleep(1);
		printf("runtime: %s, %d\n", date(&#39;Y-m-d H:i:s&#39;), $this->number);
		$this->status = "OK";
	}
}

class Logging extends Stackable {

	protected function log($message, $args = []) {
		$args = func_get_args();	

		if (($message = array_shift($args))) {
			echo vsprintf("{$message}\n", $args);
		}
	}
}

$pool = new Pool(5, \ExampleWorker::class, [new Logging()]);

foreach (range(0, 100) as $number) {
	$pool->submit(new Work($number));
}


$pool->shutdown();

var_dump($pool);
?>
로그인 후 복사

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 추천
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿