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;
}
}
?>