当前位置:首页 > 生活百科

php多线程怎么实现(一览php多线程实现方法)

栏目:生活百科日期:2025-02-11浏览:0

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.0\r\nHost:" . $host . "\r\n\r\n";  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多线程实现方法)” 的相关文章

iphone如何备份通讯录,方法很简单只需五个步骤就完成

苹果手机通讯录怎么导入到新手机?现在手机更新频率特别快,特别是iPhone手机,每年都有很多新款,越来越多的人从小米、vivo等国产手机转向了苹果。但是很多人在...

低成本创业项目有哪些,2020低成本创业商机

毫无疑问,他们就是那些听起来离我们生活很近的创业者。「正文」我们先明确创业的概念,创业,即开创事业,现在这个概念被大众简化,基本可以用简单的“做生意”这三个字来...

如何做好京东店铺运营(最值收藏的店铺运营攻略)

每天都有很多新开的京东店铺,更多的是很多淘宝系的卖家到京东开的,有一定的经验。但是京东的运作模式和淘宝的运作模式差别还是挺大的,所以新开一个京东店铺如何运营就显...

天猫入驻流程是哪四个阶段,2019天猫入驻规则及费用

整个天猫入驻的流程分四个阶段,每个阶段都是非常重要的,天猫入驻的门槛越来越高,有一个小小的细节没注意就可能导致入驻天猫失败而被驳回,希望下面的内容可以帮到您,祝...

大数据分析模型有哪些(最实用的8大数据分析模型)

一句话两句话很难说清楚这个问题,大家可以去搜一搜DataFocus出品的关于数据分析八大模型的学习视频,在我学习大数据分析的路上给了我很大的帮助,希望对你也有帮...

二手苹果手机充新机是什么意思(揭露苹果手机各种造假内

都说手机行业水很深,买手机时要验好机才能付款,即便是这样也有很大的风险,手机里的暗病你根本不知道。由于iPhone的利润可观,从iPhone4s起,一些水货机就...

ipad首次充电注意事项(苹果官网序列号查询入口)

不知道是天意还是巧合,新款ipadpro刚刚宣布上线,我用了四年,并且准备继续用到天荒地老的ipadair就开不了机了。不过故事要从一盏台灯说起。我是一个十足的...

哪个品牌的运动耳机好,最适合跑步用的耳机十款耳机推荐

音乐潮牌酷狗今季新推出的一款运动耳机,拥有着30小时续航、亲肤柔性颈挂,智能磁吸开关、语音点歌和出色音质表现,显然这是为运动人士量身打造的一款产品。而且上市之初...

京东店铺怎么运营,京东运营基础知识

从事运营这一项工作,也很久了,对于运营这块也是有一些自己的见解。现阶段仍然有很多人,小白到老手,都会觉得运营是一个非常困难的事情,也比较费脑子。其实你反过来想想...

万能软件修改器(手机上文件修改器软件使用方法)

人生没的选择,但是游戏可以!随着Steam从当年的小众平台,逐渐晋升到现在的全球最大游戏数字平台,越来越多的人接触到了单机游戏,相信每一名游戏热爱者,除了最开始...