Source-php-request-2

php比较坑的地方就是实现同样的目的,可以使用超级多种手段。比如(file_get_contents和fopen以及现在提到的curl以及fsockopen当然还有socket)这对于一个经验少的程序员来说,确实比较难选。、

所以很多情况下,我们需要比较。搜索一下网上不负责任的资源,做一个预测。然后亲自比较权衡一下。

下面是摘抄的:

function curlRequest($url, $isPost = false, $param = array(), $cookie = null, $header = null, $referer = "", $timeout = 60) {
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        if (is_array($header) && !empty($header)) { //设置header
            $set_head = array();
            foreach ($header as $k => $v) {
                $set_head[] = "$k:$v";
            }
            curl_setopt($ch, CURLOPT_HTTPHEADER, $set_head);
        } else {
            curl_setopt($ch, CURLOPT_HEADER, 0);
        }
        if ($isPost === true) {
            curl_setopt($ch, CURLOPT_POST, $isPost);
            curl_setopt($ch, CURLOPT_POSTFIELDS, $param);
        }
        if (!empty($cookie)) {
            if (is_array($cookie)) {
                $cookies = implode(‘;‘, $cookie);
            } else {
                $cookies = $cookie;
            }
            curl_setopt($ch, CURLOPT_COOKIE, $cookies);
        }
        if (!empty($referer)) {
            curl_setopt($ch, CURLOPT_REFERER, $referer);
        }
        if( $timeout > 0 ) {
            curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);
        }
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        $ret = curl_exec($ch);
        if (curl_errno($ch)) {
            $ret = ‘‘;
        }
        curl_close($ch);
        return $ret;
    }

一般的过程,我们不会用到那么复杂:

<?php
    $startTime = microtime(true);
    $url = "http://api.k780.com:88/?app=weather.today&weaid=1&appkey=10003&sign=b59bc3ef6191eb9f747dd4e83c99f2a4&format=xml";
    for($i = 0 ; $i < 2; $i++){
        $handle = curl_init($url);
        //$defaultHeader = array(‘Accept-encoding: gzip, default‘);
        curl_setopt($handle, CURLOPT_RETURNTRANSFER, 1);
        //curl_setopt($handle, CURLOPT_HTTPHEADER, $defaultHeader);
        curl_setopt($handle, CURLOPT_CONNECTTIMEOUT, 10);
        curl_setopt($handle, CURLOPT_TIMEOUT, 10);
        $xml = curl_exec($handle);
        if($i % 10 == 0){
            echo ".";
        }
        curl_close($handle);
    }
    $endTime = microtime(true);
    $total = $endTime - $startTime;
    echo $total;
    echo curl_error($handle);

?>

需要说明的是:curl在控制台是不能运行的,比如php xxx.php params_1,它需要服务器。

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-06 18:55:15

Source-php-request-2的相关文章

JQuery UI之Autocomplete(2)

1.Autocomplete获取后台数据 首先引入css和js文件,以及对应的HTML代码如下: <link href="../css/jquery-ui.css" rel="stylesheet" /> <script type="text/javascript" src="../js/jquery-1.9.1.min.js" ></script> <script type=&quo

elasticsearch index 之 put mapping

mapping机制使得elasticsearch索引数据变的更加灵活,近乎于no schema.mapping可以在建立索引时设置,也可以在后期设置.后期设置可以是修改mapping(无法对已有的field属性进行修改,一般来说只是增加新的field)或者对没有mapping的索引设置mapping.put mapping操作必须是master节点来完成,因为它涉及到集群matedata的修改,同时它跟index和type密切相关.修改只是针对特定index的特定type. 在Action su

JQuery UI之Autocomplete(4)多值输入、远程缓存与组合框

1.多值输入 首先加入相关的css和js文件,以及对应的HTML代码如下: <link href="../css/jquery-ui.css" rel="stylesheet" /> <script type="text/javascript" src="../js/jquery-1.9.1.min.js" ></script> <script type="text/java

JQuery 插件 autocomplete

最近有个功能就是对文本框里的内容模糊查询,并出现一个下拉框对模糊查询出来的内容进行选择.最开始写的时候我就想起以前的公司遇到过,用的是rpc(简称人品差),but我已经记不得咋个实现的了,然后各种求助以前的同事.然而他们都不晓得咋个弄了.好吧,咋办呢,我就问旁边的同事有没有遇到过这种类似的功能,怎么做的,早点问也不至于时间白白浪费吧.于是就有了autocomplete.我的知识面不广,所以现在我也尽量在总结,不要笑. 进入主题: 官网地址:api.jqueryui.com/autocomplet

知问前端——邮箱自动补全

本节课,我们通过自动补全source属性的function回调函数,来动态的设置我们的数据源,以达到可以实现邮箱补全功能. 数据源function 自动补全UI的source不但可以是数组,也可以是function回调函数,提供了自带的两个参数设置动态的数据源. $('#email').autocomplete({ source : function (request, response) { //获取用户输入的内容 alert(request.term); //可以获取你输入的值 //绑定数据

邮箱补全代码

$("#email").autocomplete({ delay:0, //自动选中第一行 autoFocus:true, source:function(request,response){ var hosts = ["qq.com","163.com","sina.com.cn","126.com","gmail.com","hotmail,com"], term

20151222jquery学习笔记--验证注册表单

$(function () { $('#search_button').button({ icons : { primary : 'ui-icon-search', }, }); $('#reg').dialog({ autoOpen : true, modal : true, resizable : false, width : 320, height : 340, buttons : { '提交' : function () { $(this).submit(); } } }).button

jQuery自动补全插件使用,三种获取数据源方式

jQuery有很多很多的已经实现,很漂亮的插件,autocomplete就是其中之一.jQuery ui autocomplete主要支持字符串Array.JSON两种数据格式. 主要参数: Source:数据源,类型为String.Array.Function,其中String为ajax请求的服务器端地址,返回Array/JSON格式,Array即为数组,静态定义到页面中的数据,下面会有具体的  demo, Function(request,response):通过request.term获得

输入框提示自动提示类似百度,淘宝的输入框

1.需要的js和样式(jquery 是必选的) <script src="${ctx}/js/jquery/jquery-1.7.2.js" type="text/javascript"></script> <script src="${ctx}/js/jquery/jquery-ui-1.9.2.custom.js" type="text/javascript"></script&g

C#中使用JQueryUI中Autocomplete插件

服务器端后台代码: 1 private string GetModelNames() { 2 return @"[ 3 { 4 'value': 'jquery', 5 'label': 'jQuery', 6 'desc': 'the write less, do more, JavaScript library', 7 }, 8 { 9 'value': 'jquery-ui', 10 'label': 'jQuery UI', 11 'desc': 'the official user i