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。
Source-php-request-2的更多相关文章
- Redis简单案例(一) 网站搜索的热搜词
对于一个网站来说,无论是商城网站还是门户网站,搜索框都是有一个比较重要的地位,它的存在可以说是 为了让用户更快.更方便的去找到自己想要的东西.对于经常逛这个网站的用户,当然也会想知道在这里比较“火” ...
- jQuery Ajax传值给Servlet,在Servlet里Get接受参数乱码的解决方法
最近在学jquery ui,在做一个小功能的时候需要将前台的值获取到,通过Ajax传递给Servlet,然后再在返回数据结果,但是在Servlet接受参数的时候,通过后台打印,发现接受乱码,代码示例如 ...
- elasticsearch-1.3.0 之索引代码粗略梳理
elasticsearch-1.3.0 发送请求 创建 [root@centos ~]# curl -XPUT 172.16.136.159:9200/customer?pretty { " ...
- Autocomplete 自动补全(Webform实战篇)
开篇语 因为项目中需要用到一个自动补全的功能,功能描述: 需求一:新增收件人的时候,自动下拉显示出数据库中所有的收件人信息(显示的信息包括:姓名-收件地址-联系方式) 需求二:选中一个值得时候,分别赋 ...
- Lucene热词显示并选择
利用Jquery easyui里的autocomplete(1.10.0版本) 的异步请求(remot.html) 添加引用 <script src="~/Scripts/jquery ...
- HDMI之CEC DDC学习笔记(可能有误)
1 HDMI的音视频通路,有待学习: 2 DDC通路,大致是个IIC接口,读取上游器件的EDID或者E-EDID数据: EDID的前128字节数据格式如下:(可能有不同版本,格式可能有区别)
- ASP.NET MVC使用jQuery实现Autocomplete
Insus.NET的以前的ASP.NET MVC的练习中,也有实现过Autocomplete的功能.依次是使用jQuery来实现. 首先在数据库准备一些数据: CREATE TABLE [dbo].[ ...
- jquery.ui.widget详解
案例详解 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <titl ...
- [iOS 利用MapKit和CoreLocation框架打造精简的定位和导航]
运行效果: 一.利用<CoreLocation/CoreLocation.h>定位 创建变量 CLLocationManager *locationManager , ...
- 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 ...
随机推荐
- 洛谷 [P1608] 最短路计数
最短路计数模版 本题要注意重边的处理 #include <iostream> #include <cstdio> #include <algorithm> #inc ...
- Bzoj1195 [HNOI2006]最短母串 [AC自动机]
Time Limit: 10 Sec Memory Limit: 32 MBSubmit: 1304 Solved: 439 Description 给定n个字符串(S1,S2,„,Sn),要求找 ...
- 【BZOJ4504&&Hihocoder1046】K个串(主席树,堆)
题意:一个长度为n的数字序列,选出其中的一个连续子串,然后统计其子串中所有数字之和(注意这里重复出现的数字只被统计一次)询问第k大的和是多少 1 <= n <= 100000, 1 < ...
- javascript实现可拖动DIV层
原文发布时间为:2009-05-04 -- 来源于本人的百度文章 [由搬家工具导入] 注意以下红色部分是关键.如果不使用 document.documentElement,而使用docume ...
- DataBinder.Eval值的判断
原文发布时间为:2009-04-10 -- 来源于本人的百度文章 [由搬家工具导入] 问:如何对<%# DataBinder.Eval(Container.DataItem,"Ly_R ...
- .bat 处理错误码
某些命令只会返回error level,而要添加互操作性,.bat文件的返回值,exit code应该最后指定,那么需要,在这个单行的命令后面单个添加处理error level 的语句,最后再做统一的 ...
- Android布局实现阴影效果
最近某个模块的UI,设计想要卡片式阴影效果.之前查阅过资料,用传统的xml方式作为布局的background <?xml version="1.0" encoding=&qu ...
- MySQL的INFORMATION_SCHEMA数据库简介
大家在安装或使用MYSQL时,会发现除了自己安装的数据库以外,还有一个 information_schema数据库.information_schema数据库是做什么用的呢,使用WordPress博客 ...
- SecureCRT分屏显示
[Tab右键]或者[Session Manager右键]->[Send to New Tab Group]
- java 相关软件使用趋势
http://www.baeldung.com/java-in-2017 https://mp.weixin.qq.com/s?__biz=MzI4NjYwMjcxOQ==&mid=224 ...