• 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;
    }
  • 相关阅读:
    Javascript中this关键字详解
    Javascript中this关键字详解
    springMVC对静态资源访问的处理
    springMVC对静态资源访问的处理
    Java编程风格节选
    Java编程风格节选
    ACID原则
    移动端实现裁剪图片生成base64图片(可缩放)
    移动端实现裁剪图片生成base64图片(可缩放)
    PHP imagick API中文简介
  • 原文地址:https://www.cnblogs.com/yuzhoushenqi/p/7597262.html
Copyright © 2020-2023  润新知