zoukankan      html  css  js  c++  java
  • PHP并发之Swoole

    <?php
    /**
     * Created by PhpStorm.
     * User: zhezhao
     * Date: 2016/10/20
     * Time: 10:51
     */
    $url_arr = array();
    for ($i=0;$i<1000;$i++){
        $url_arr[] = "http://www.baidu.com/s?wd=".$i;
    }
    echo "start:".date("Y-m-d H:i:s").PHP_EOL;
    $start_time = microtime(true);
    $workers = array();
    for ($i=0;$i<200;$i++){
        $process = new swoole_process('getContents',true);
        $process->start();
        $process->write($i);
        $workers[] = $process;
    }
    //主进程数据结果
    foreach ($workers as $process){
        echo $process->read();
        echo PHP_EOL;
    }
    echo "end:".date("Y-m-d H:i:s").PHP_EOL;
    $end_time = microtime(true);
    echo $end_time - $start_time.PHP_EOL;
    function getContents(swoole_process $worker){
        $i = $worker->read();
        global $url_arr;
        $n = 5;
        for($j=$i*$n;$j<=$i*$n+($n-1);$j++)
        {
        $res = execCurl($url_arr[$j],$j);
            echo $res.PHP_EOL;
        }
    /*
        $res1 = execCurl($url_arr[($i*5)],$i*5);
        $res2 = execCurl($url_arr[($i*5+1)],$i*5+1);
        $res3 = execCurl($url_arr[($i*5+2)],$i*5+2);
        $res4 = execCurl($url_arr[($i*5+3)],$i*5+3);
        $res5 = execCurl($url_arr[($i*5+4)],$i*5+4);
        echo $res1.PHP_EOL.$res2.PHP_EOL.$res3.PHP_EOL.$res4.PHP_EOL.$res5;
    */
    }
    function execCurl($url,$num){
        $result = get_data($url); 
        file_put_contents('sw/'.$num.'.html',$result);
        return "handle ".$url." finished";
    }
    
    function get_data($url){
    
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
        //curl_setopt($ch, CURLOPT_HTTPHEADER, $headerArr);
        curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (compatible; MSIE 5.01; Windows NT 5.0)');
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
        curl_setopt($ch, CURLOPT_AUTOREFERER, 1);
        //curl_setopt($ch, CURLOPT_POST, true );
        //curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, true);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
        $tmpInfo=null;
        $tmpInfo = curl_exec($ch);
        if($tmpInfo){
            curl_close($ch);
            return $tmpInfo;
        } else { 
            $error = curl_errno($ch);
            curl_close($ch);
            //throw new WxPayException("curl出错,错误码:$error");
        }
       return $tmpInfo;
    }
  • 相关阅读:
    Java——异步调用
    GTK3-demo 代码调用
    ef core code first 生成的数据库表去复数的方法
    nuxt全局挂载导航路由守卫
    vue导入,导出,列表展示excel数据
    JS之blob对象下载文件,解决word可能打开是乱码,xlsx文件打不开,图片显示格式不支持等问题
    程序猿的十一条浮躁表现
    RSA加密解密及加签验签
    冒泡排序
    Failed to parse source for import analysis because the content contains invalid JS syntax
  • 原文地址:https://www.cnblogs.com/yuzhoushenqi/p/7597262.html
Copyright © 2011-2022 走看看