php Pthread 多线程 Worker
2018-10-03 17:58:28来源:博客园 阅读 ()
1 <?php 2 //PHP 高级编程之多线程 http://www.netkiller.cn/journal/thread.php.html#idp57489856 3 //worker 是一个具有持久化上下文的线程对象,通常用来在多个线程中使用。 4 //worker 对象start后,会直接运行run()方法,执行完毕之后,线程也不会die掉 5 //SQLQuery 是任务类 6 class SQLQuery extends Thread 7 { 8 public $worker; 9 public $sql; 10 public function __construct($sql) 11 { 12 $this->sql = $sql; 13 } 14 15 public function run() 16 { 17 $dbh = $this->worker->getConnection(); 18 $row = $dbh->prepare($this->sql,array(PDO::ATTR_CURSOR => PDO::CURSOR_FWDONLY)); 19 $row->execute(); 20 while($member = $row->fetch(PDO::FETCH_ASSOC)) 21 { 22 // print_r($member); 23 } 24 } 25 } 26 //worker 执行任务 27 class ExampleWorker extends Worker { 28 public static $dbh; 29 public function __construct($name) { 30 } 31 32 /* 33 * The run method should just prepare the environment for the work that is coming ... 34 */ 35 public function run(){ 36 self::$dbh = new PDO('mysql:dbname=mix;host=192.168.33.11','root',''); 37 } 38 public function getConnection(){ 39 return self::$dbh; 40 } 41 } 42 43 $worker = new ExampleWorker("My Worker Thread"); 44 45 for ($i = 0; $i < 5; ++$i) { 46 $worker->stack(new SQLQuery('select * from stores limit '.$i)); // 将要执行的任务入栈 47 } 48 49 echo "{$worker->getStacked()} tasks\n"; //获取栈中剩余的任务数量 50 $worker->start(); //执行完Worker中的对象后 51 $worker->shutdown(); //关闭Worker。 跟队列很像 52 53 /* 54 这里会报错 55 Uncaught RuntimeException: the creator of ExampleWorker already started 56 没有线程die掉 57 while(true) 58 { 59 sleep(5); 60 $worker->start(); 61 $worker->shutdown(); 62 } 63 */ 64
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:PHP中内存管理的详细解析
- PHP写UltraEdit插件脚本实现方法 2020-03-29
- php 带逗号千位符数字的处理方法 2020-03-28
- PHP三元运算符的结合性介绍 2020-03-28
- PHP静态延迟绑定和普通静态效率的对比 2020-03-28
- 基于php流程控制语句和循环控制语句 2020-03-28
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash