php网站开发多线程开发_开发源码--php实现多线程

折腾了一个礼拜,终于把任务给提交了;上面给我的任务是在linux下实现定时任务和自动任务,这个定时任务和自动任务有可能会发生并发,所以不得不考虑多线程。我在网上也找了很多资料貌似不符合我的需求,最后结合前辈的智慧和自己的专研,还是实现了;

public function testa() {

$id = $_REQUEST['id'];

for($i=0;$i<1000000;$i++){

}

$time = time();

$data['time'] = $time;

M('test')->add($data);

}

public function testb() {

$id = $_REQUEST['id'];

$time = time();

$data['time'] = $time;

M('test')->add($data);

}

php本生是不支持多线程的,如果想要上面2个方法执行的时间相同,我采用了curl,一下是curl并行这2个方法的代码

本部分设定了隐藏,您已回复过了,以下是隐藏的内容

//加载一个多进程CURL实例

$mh = curl_multi_init();

$handles = array();

$array=array("localhost:1001/index.php/test/testa","localhost:1001/index.php/test/testb");

foreach($array as $k=>$v)

{

// 创建一个单线程CURL实例

$ch = curl_init();

// 设置CURL相关参数

curl_setopt($ch, CURLOPT_URL, $v);

curl_setopt($ch, CURLOPT_HEADER, 0);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

curl_setopt($ch, CURLOPT_TIMEOUT, 30);

// 将该进程加载到实例中

curl_multi_add_handle($mh,$ch);

// 加入循环数组中

$handles[] = $ch;

}

// 执行CURL多线程实例

$running=null;

do

{

curl_multi_exec($mh,$running);

// 间隔0.25S

//usleep (250000);

} while ($running > 0);

// 获取采集内容

for($i=0;$i

{

curl_multi_remove_handle($mh,$handles[$i]);

}

//关闭实例

curl_multi_close($mh);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值