PHP使用Pthread实现的多线程操作实例
发布:smiling 来源: PHP粉丝网 添加日期:2021-06-26 15:38:05 浏览: 评论:0
这篇文章主要介绍了PHP使用Pthread实现的多线程操作的方法,以完整实例形式分析了php多线程的创建及使用相关技巧,需要的朋友可以参考下,本文实例讲述了PHP使用Pthread实现的多线程操作,分享给大家供大家参考,具体如下:
- <?php
- class vote extends Thread {
- public $res = '';
- public $url = array();
- public $name = '';
- public $runing = false;
- public $lc = false;
- public function __construct($name) {
- $this->res = '暂无,第一次运行.';
- $this->param = 0;
- $this->lurl = 0;
- $this->name = $name;
- $this->runing = true;
- $this->lc = false;
- }
- public function run() {
- while ($this->runing) {
- if ($this->param != 0) {
- $nt = rand(1, 10);
- echo "线程[{$this->name}]收到任务参数::{$this->param},需要{$nt}秒处理数据.\n";
- $this->res = rand(100, 999);
- sleep($nt);
- $this->lurl = $this->param;
- $this->param = '';
- } else {
- echo "线程[{$this->name}]等待任务..\n";
- }
- sleep(1);
- }
- }
- }
- //这里创建线程池.
- $pool[] = new vote('a');
- $pool[] = new vote('b');
- $pool[] = new vote('c');
- //启动所有线程,使其处于工作状态
- foreach ($pool as $w) {
- $w->start();
- }
- //派发任务给线程
- for ($i = 1; $i < 10; $i++) {
- $worker_content = rand(10, 99);
- while (true) {
- foreach ($pool as $worker) {
- //参数为空则说明线程空闲
- if ($worker->param=='') {
- $worker->param = $worker_content;
- echo "[{$worker->name}]线程空闲,放入参数{$worker_content},上次参数[{$worker->lurl}]结果[{$worker->res}].\n";
- break 2;
- }
- }
- sleep(1);
- }
- }
- echo "所有线程派发完毕,等待执行完成.\n";
- //等待所有线程运行结束
- while (count($pool)) {
- //遍历检查线程组运行结束
- foreach ($pool as $key => $threads) {
- if ($worker->param=='') {
- echo "[{$threads->name}]线程空闲,上次参数[{$threads->lurl}]结果[{$threads->res}].\n";
- echo "[{$threads->name}]线程运行完成,退出.\n";
- //设置结束标志
- $threads->runing = false;
- unset($pool[$key]);
- }
- }
- echo "等待中...\n";
- sleep(1);
- }
- echo "所有线程执行完毕.\n";
希望本文所述对大家php程序设计有所帮助。
Tags: Pthread PHP多线程
相关文章
- ·PHP多线程(pthreads)与自动加载BUG问题(2014-08-27)
- ·PHP多线程pthreads使用例子(2015-12-24)
- ·使用pthreads实现真正的PHP多线程(需PHP5.3以上版本)(2020-11-27)
- ·php pthreads多线程的安装与使用(2021-07-06)
- ·php多线程thread开发与应用的例子(2014-06-25)
- ·php多线程抓取信息测试例子(2014-08-27)
- ·PHP多线程的实现方法详解(2014-08-27)
- ·PHP中实现异步调用多线程程序代码(2014-08-28)
- ·php多线程的几点思考(2015-04-08)
- ·php基于Socket实现多线程开发教程(2015-04-15)
- ·php curl_multi 多线程查询的例子(2018-09-16)
- ·php多线程并发是怎么实现的(2018-09-18)
- ·php多线程是什么意思(2020-02-03)
- ·php fsockopen解决办法 php实现多线程(2020-08-28)
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)