swoole多线程采集入库示例
php备忘

<?php $page = 120; $worker_num = 10; $redirect_stdout = false; $workers = []; for($i=1;$i<=$worker_num;$i++){ $process = new swoole_process('callback_function_we_write',$redirect_stdout); $pid = $process->start(); $workers[$pid] = $process; $workers[$pid]->write($i); } function callback_function_we_write(swoole_process $worker){ $recv = $worker->read(); $start = (($recv-1)*12)+1; $end = $recv *12; for($i=$start;$i<=$end;$i++){ $mainpost_url = "http://www.wdzj.com/front_select-plat"; $maindata["currPage"] = $i; $maindata["params"] = ""; $maindata["sort"] ="0"; $time = time(); $maincoo = CurlPost($mainpost_url,$maindata); $mianlist = json_decode($maincoo,true); foreach($mianlist['list'] as $keyy=>$valuee){ $url = 'http://www.wdzj.com/dangan/'.$valuee['platPin']; if($valuee['platStatus']==1){ mysql_connect("localhost","root",""); mysql_select_db("caiji"); $sql = "insert into `lzh_wdzj_dangan` set `name`='{$valuee['platName']}',`platId`='{$valuee['platId']}',`url`='{$url}',`platPin`='{$valuee['platPin']}',`update_time`='{$time}'"; var_dump(mysql_query($sql)); echo "采集{$url}成功!"; } } } $worker->exit(0); } function CurlPost($url,$data){ $ch = curl_init (); curl_setopt ( $ch, CURLOPT_URL, $url ); curl_setopt ( $ch, CURLOPT_POST, 1 ); curl_setopt ( $ch, CURLOPT_HEADER, 0 ); curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1 ); curl_setopt ( $ch, CURLOPT_POSTFIELDS, $data ); $return = curl_exec ( $ch ); curl_close ( $ch ); return $return; } while(1){ $ret = swoole_process::wait(); if ($ret){// $ret 是个数组 code是进程退出状态码, $pid = $ret['pid']; //unset($workers[$pid]); echo PHP_EOL."Worker Exit, PID=" . $pid . PHP_EOL; }else{ break; } } ?>