php多线程有几种实现方法

php多线程有几种实现方法

1、curl_multi方法

当需要多线程的时候,可以用curl_multi一次性请求多个操作来完成,但curl走的是网络通信,效率与可靠性就比较差了的。

function main(){     $sql = "select waybill_id,order_id from waybill where status>40 order by update_time desc limit 10 ";      $data = Yii::app()->db->createCommand($sql)->queryAll(); //yii 框架格式      foreach ($data as $k => $v) {         if ($k % 2 == 0) { //偶数发一个网址          $send_data[$k]['url'] = '';          $send_data[$k]['body'] = $v['waybill_id'];        } else { //奇数发送另外一个网址         $send_data[$k]['url'] = 'http://www.abc.com';          $send_data[$k]['body']=array($v['order_id'] => array('extra' => 16));       }     }    }

登录后复制

2、通过stream_socket_client 方式

function sendStream() {     $english_format_number = number_format($number, 4, '.', '');      echo $english_format_number;      exit();     $timeout = 10;     $result = array();     $sockets = array();     $convenient_read_block = 8192;     $host = "test.local.com";     $sql = "select waybill_id,order_id from xm_waybill where status>40 order by update_time desc limit 1 ";      $data = Yii::app()->db->createCommand($sql)->queryAll();     $id = 0;      foreach ($data as $k => $v) {       if ($k % 2 == 0) {         $send_data[$k]['body'] = NoticeOrder::getSendData($v['waybill_id']);        } else {         $send_data[$k]['body'] = array($v['order_id'] => array('extra' => 16));        }        $data = json_encode($send_data[$k]['body']);       $s = stream_socket_client($host . ":80", $errno, $errstr, $timeout, STREAM_CLIENT_ASYNC_CONNECT | STREAM_CLIENT_CONNECT);       if ($s) {          $sockets[$id++] = $s;         $http_message = "GET /php/test.php?data=" . $data . " HTTP/1.0Host:" . $host . "";          fwrite($s, $http_message);       } else {          echo "Stream " . $id . " failed to open correctly.";       }      }  }

登录后复制

3、通过多进程代替多线程

function daemon($func_name,$args,$number){   while(true){     $pid=pcntl_fork();     if($pid==-1){       echo "fork process fail";       exit();     }elseif($pid){//创建的子进程        static $num=0;       $num++;       if($num>=$number){         //当进程数量达到一定数量时候,就对子进程进行回收。         pcntl_wait($status);          $num--;       }      }else{ //为0 则代表是子进程创建的,则直接进入工作状态        if(function_exists($func_name)){         while (true) {           $ppid=posix_getpid();           var_dump($ppid);           call_user_func_array($func_name,$args);           sleep(2);         }       }else{         echo "function is not exists";       }       exit();       }   } }  function worker($args){    //do something  }  daemon('worker',array(1),2);

登录后复制

推荐教程:PHP视频教程

立即学习“PHP免费学习笔记(深入)”;

以上就是php多线程有几种实现方法的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2522904.html

(0)
上一篇 2025年3月5日 17:33:58
下一篇 2025年2月27日 02:28:29

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • php各版本区别

    一、php 5.2、5.3、5.4、5.5、5.6 版本区别对比以及新功能详解 PHP5.2 以前:autoload, PDO 和 MySQLi, 类型约束PHP5.2:JSON 支持PHP5.3:弃用的功能,匿名函数,新增魔术方法,命名空…

    2025年3月5日
    200
  • php工作原理是什么

    一、php的所有应用程序都是通过web服务器(如iis,nginx或apache)和php引擎程序解释执行完成的 工作过程: 1、当用户在浏览器地址中输入要访问的PHP页面文件名,然后触发一个web请求,并将请求传送到WEB服务器。 2、W…

    2025年3月5日
    200
  • php函数可以分为哪三种

    1、变量函数 变量函数又叫可变函数,php脚本在执行中会寻找与变量的值同名的函数并且去执行它,这样的好处是可以将不同的函数名称赋值给同一个变量,赋给变量那个函数名,在程序中使用变量名加上圆括号就调用那个函数执行。 2、递归函数 递归函数又叫…

    2025年3月5日
    200
  • php有多态吗

    一、什么是多态? 多态其实就是根据参数不同而执行不同的方法。 二、php中的多态 多态的概念一般是强类型语言来谈的,因为强类型语言它必须要声明参数类型,比如一个手电筒对象的打开方法其参数申明了只能是蓝光,就不能传其他光。但可以用父类渲染的方…

    2025年3月5日
    200
  • php有多线程吗

    php 默认并不支持多线程,要使用多线程需要安装 pthread 扩展,而要安装 pthread 扩展,必须使用 –enable-maintainer-zts 参数重新编译 php,这个参数是指定编译 php 时使用线程安全方式…

    2025年3月5日
    200
  • php有哪些关键词

    任何php开发人员在使用面向对象构建web应用程序时,都需要掌握6个关键字,他们分别是: Private Private是访问控制的最核心部分,因此,在类中被定义成Private的属性(变量)或方法只能在该类内部访问,该类的任何实例(对象)…

    2025年3月5日
    200
  • php有哪些特点

    php(php: hypertext preprocessor的缩写,中文名:“超文本预处理器”)是一种通用开源脚本语言。语法吸收了c语言、java和 perl的特点,入门门槛较低,易于学习,使用广泛,主要适用于web开发领域。 PHP语言…

    2025年3月5日
    200
  • php有哪些运行环境

    1、nginx + swoole swoole是一个异步、并行、高性能的网络通信引擎,使用纯C语言编写,提供了php语言的异步多线程服务器。swoole内置了http/websocket服务器端和客户端,http2.0服务器端,支持类似Go…

    2025年3月5日
    200
  • php二次开发做些啥

    什么是二次开发? 二次开发,简单的说就是在现有的软件上进行定制修改,功能的扩展,然后达到自己想要的功能和效果,一般来说都不会改变原有系统的内核。 (推荐学习:PHP视频教程) 为什么要二次开发? 随着信息化技术的不断发展,IT行业涌现出了一…

    2025年3月5日
    200
  • php动态网站开发是什么

    《php动态网站开发》是2015年清华大学出版社出版的图书,作者是唐四薪。本书系统地介绍了php的核心原理与应用技术,在叙述有关原理时安排了大量的相关实例。 动态网站的开发与实施涉及范围极其广泛、研究时间长、过程发展复杂,本身就是一个需要经…

    2025年3月5日
    200

发表回复

登录后才能评论