zoukankan      html  css  js  c++  java
  • 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
    error_reporting(E_ALL ^ E_NOTICE); 
    ini_set('display_errors', true);
    
    //解释怎样使用HTTPHEADER。传送json格式数据
    $id = $_POST['id'];
    $symbol = $_POST['symbol'];
    $companyName = $_POST['companyName'];
    $data = array("id" => "$id", "symbol" => "$symbol", "companyName" => "$companyName");
    $data_string = json_encode($data);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
    curl_setopt($ch, CURLOPT_HTTPHEADER, array(
        'Content-Type: application/json',
        'Content-Length: ' . strlen($data_string))
    );
    ?

    >

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

    <?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,它须要server。

  • 相关阅读:
    git 删除已经提交的文件
    IDEA不显示service 服务窗口
    MySQL SQL语句查询结果 多列合并为1列
    Linux远程执行脚本
    mycat 连接命令
    win10 关闭被占用的端口
    ERROR 1045 (HY000): Access denied for user 'root', because password is error
    unblock with 'mysqladmin flush-hosts'
    neo4j数据库cypher查询
    基于websocket的网页实时消息推送与在线聊天(上篇)
  • 原文地址:https://www.cnblogs.com/jhcelue/p/7241445.html
Copyright © 2011-2022 走看看