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。

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

  1. Redis简单案例(一) 网站搜索的热搜词

    对于一个网站来说,无论是商城网站还是门户网站,搜索框都是有一个比较重要的地位,它的存在可以说是 为了让用户更快.更方便的去找到自己想要的东西.对于经常逛这个网站的用户,当然也会想知道在这里比较“火” ...

  2. jQuery Ajax传值给Servlet,在Servlet里Get接受参数乱码的解决方法

    最近在学jquery ui,在做一个小功能的时候需要将前台的值获取到,通过Ajax传递给Servlet,然后再在返回数据结果,但是在Servlet接受参数的时候,通过后台打印,发现接受乱码,代码示例如 ...

  3. elasticsearch-1.3.0 之索引代码粗略梳理

    elasticsearch-1.3.0 发送请求 创建 [root@centos ~]# curl -XPUT 172.16.136.159:9200/customer?pretty { " ...

  4. Autocomplete 自动补全(Webform实战篇)

    开篇语 因为项目中需要用到一个自动补全的功能,功能描述: 需求一:新增收件人的时候,自动下拉显示出数据库中所有的收件人信息(显示的信息包括:姓名-收件地址-联系方式) 需求二:选中一个值得时候,分别赋 ...

  5. Lucene热词显示并选择

    利用Jquery easyui里的autocomplete(1.10.0版本) 的异步请求(remot.html) 添加引用 <script src="~/Scripts/jquery ...

  6. HDMI之CEC DDC学习笔记(可能有误)

    1 HDMI的音视频通路,有待学习: 2 DDC通路,大致是个IIC接口,读取上游器件的EDID或者E-EDID数据: EDID的前128字节数据格式如下:(可能有不同版本,格式可能有区别)

  7. ASP.NET MVC使用jQuery实现Autocomplete

    Insus.NET的以前的ASP.NET MVC的练习中,也有实现过Autocomplete的功能.依次是使用jQuery来实现. 首先在数据库准备一些数据: CREATE TABLE [dbo].[ ...

  8. jquery.ui.widget详解

    案例详解 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <titl ...

  9. [iOS 利用MapKit和CoreLocation框架打造精简的定位和导航]

    运行效果:            一.利用<CoreLocation/CoreLocation.h>定位 创建变量 CLLocationManager *locationManager , ...

  10. Java Code Examples for javax.servlet.http.Part

    http://www.programcreek.com/java-api-examples/index.php?api=javax.servlet.http.Part The following ar ...

随机推荐

  1. 【05】react 之 组件state

    1.1.  状态理解 React的数据流:由父节点传递到子节点(由外到内传递),如果顶层组件某个prop改变了,React会向下传递,重新渲染所有使用过该属性的组件.除此之外React 组件内部还具有 ...

  2. Java语法糖(二)

    语法糖之四:内部类 内部类:顾名思义,在类的内部在定义一个类.内部类仅仅是编译时的概念,编译成字节码后,内部类会生成单独的Class文件. 四种:成员内部类.局部内部类.匿名内部类.静态内部类. 1. ...

  3. javascript获取querystring值【个人觉得这种方法最好最棒最像.NET】

    原文发布时间为:2009-05-22 -- 来源于本人的百度文章 [由搬家工具导入] JavaScript获取QueryString值, 当没有QueryString值时输出bool型 null 用j ...

  4. .net web api ioc unity usage

    1.use nuget to install unity.webapi 2.add configurations in application_start folder using Microsoft ...

  5. 利用canvas裁剪想要的图片

    <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...

  6. c++基础(一)

    c++中静态内存分配与动态内存分配:1.静态对象是有名字的变量, 我们直接对其进行操作 ,而动态对象是没有名字的变量我们通过指针间接地对它进行操作.(静态内存分配是因为在源码编译的时候,编译器就为变量 ...

  7. lightgbm 学习资料汇总

    操作实例:https://blog.csdn.net/luoyexuge/article/details/72956491 中文文档:https://lightgbm.apachecn.org/cn/ ...

  8. C语言中的内存相关问题

    内存是用来存储数据与程序的,对我们写程序来说非常重要.所以内存对程序来说几乎是本质需求.越简单的程序需要越少的内存,而越庞大越复杂的程序需要更多的内存. 注意:在嵌入式系统中有ROM和RAM两类内存, ...

  9. Day 26 python 正则表达式

    re模块\正则表达式 一.元字符 1.. ^ $ * + ? { } [ ] | ( ) \ "." 代表(任意一个字符) "*" 代表(任意数量任意字符,0- ...

  10. [SPOJ7001]VLATTICE - Visible Lattice Points

    题目大意: $q(q\leq50)$组询问,对于给定的$n(n\leq10^7)$,求$\displaystyle\sum_{i=0}^n\sum_{j=0}^n\sum_{k=0}^n[\gcd(i ...