PHP读取远程文件的4种方法
1. fopen, fread
1 if($file = fopen("http://www.example.com/", "r")) {
2 while(!feof ($file))
3 $data .= fread($file, 1024);
4 }
5 fclose($file);
2. file_get_contents
很简单的一句话:
$data = file_get_contents("http://www.example.com/");
如果要限制超时时间,需要使用到它的$context参数
1 $opts = array('http' => array('timeout' => 30) );
2 $context = stream_context_create($opts);
3 $data = file_get_contents("http://www.example.com/", false, $context);
其中,第二个参数$use_include_path表示在php.ini设置的include_path中查找文件,使用false即可。
此外,本函数也可以发送POST数据:
1 $opts = array('http' => array(
2 'method' => 'POST',
3 'content' => 'x=1&y=2'));
4 $context = stream_context_create($opts);
5 $data = file_get_contents("http://www.example.com/", false, $context);
相对来说第二种方法比较快捷。以上两种方法需要php.ini设置allow_url_fopen=On。
3. fsockopen, fwrite, fread
01 if($fp = fsockopen('www.example.com', 80, $errno, $errstr, 30)) {
02 $header = "GET /ip.php?ip=$ip HTTP/1.0rn";
03 $header .= "HOST: www.example.comrn";
04 $header .= "Connection: Closernrn";
05 fwrite($fp, $header);
06 stream_set_timeout($fp, 2);
07 while(!feof($fp))
08 $data .= fread($fp, 128);
09 fclose($fp);
10 }
本方法需要开启php_sockets扩展
4. curl
1 $curl = curl_init();
2 curl_setopt($curl, CURLOPT_URL, "http://www.example.com/");
3 curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
4 curl_setopt($curl, CURLOPT_TIMEOUT, 30);
5 $data = curl_exec($curl);
6 curl_close($curl);
curl也可用来发送POST数据及发送HTTP请求头信息,以下是另一用例:
01 $curl = curl_init();
02 curl_setopt_array($curl, array(
03 CURLOPT_URL => "http://192.168.1.200/",
04 CURLOPT_RETURNTRANSFER => 1,
05 CURLOPT_POSTFIELDS => array('name'=>'Foo', 'password'=>'Bar'),
06 CURLOPT_POST => 1,
07 CURLOPT_HTTPHEADER => array('Host:www.example.com', 'Referer:www.example.com'),
08 );
09 $data = curl_exec($curl);
10 curl_close($curl);
本方法需要开启php_curl扩展
PHP读取远程文件的4种方法的更多相关文章
- PHP读取远程文件的三种方法
file_get_contents <?php$url = http://www.xxx.com/;$contents = file_get_contents($url);//如果出现中文乱码使 ...
- java分享第十六天( java读取properties文件的几种方法&java配置文件持久化:static块的作用)
java读取properties文件的几种方法一.项目中经常会需要读取配置文件(properties文件),因此读取方法总结如下: 1.通过java.util.Properties读取Propert ...
- matlab读取cvs文件的几种方法
matlab读取CVS文件的几种方法: 1,实用csvread()函数 csvread()函数有三种使用方法: 1.M = csvread('filename')2.M = csvread('fi ...
- R语言读取excel文件的3种方法
R读取excel文件中数据的方法: 电脑有一个excel文件,原始的文件路径是:E:\R workshop\mydata\biom excel数据为5乘2阶矩阵,元素为 ...
- PHP读取大文件的几种方法介绍
读取大文件一直是一个头痛的问题,我们像使用php开发读取小文件可以直接使用各种函数实现,但一到大文章就会发现常用的方法是无法正常使用或时间太长太卡了,下面我们就一起来看看关于php读取大文件问题解决办 ...
- Java读取Excel文件的几种方法
Java读取 Excel 文件的常用开源免费方法有以下几种: 1. JDBC-ODBC Excel Driver 2. jxl.jar 3. jcom.jar 4. poi.jar 简单介绍: 百度文 ...
- 读取Excel文件的两种方法
第一种方法:传统方法,采用OleDB读取EXCEL文件, 优点:写法简单,缺点:服务器必须安有此组件才能用,不推荐使用 private DataSet GetConnect_DataSet2(stri ...
- QT 读取txt文件的几种方法
废话不说直接上代码 1. QString displayString; QFile file("/home/alvin/text.txt"); if(!file.open(QIOD ...
- java读取properties文件的几种方法
一.项目中经常会需要读取配置文件(properties文件),因此读取方法总结如下: 1.通过java.util.Properties读取 Properties p=new Properties(); ...
随机推荐
- AWK 用法
awk 用法:awk ' pattern {action} ' 变量名 含义 ARGC 命令行变元个数 ARGV 命令行变元数组 FILENAME 当前输入文件名 FNR 当前文件中的记录号 FS ...
- 开发者工具删除元素Delete Element
开发者工具有个很好用的功能,通过删除元素,可以查看页面哪些元素比较特殊,同时也可以排除干扰.
- RHEL 7.3修改网卡命名规则为ethX
RHEL 7网卡默认命名规则:以太网卡(Ethernet)为enX,无线网卡(WLAN)为wlX,修改网卡命名规则为ethX如下: 1.修改/etc/sysconfig/grub文件,添加net.if ...
- iptables之ipset集群工具
ipset介绍 ipset是iptables的扩展,它允许你创建 匹配整个地址集合的规则.而不像普通的iptables链只能单IP匹配, ip集合存储在带索引的数据结构中,这种结构即时集合比较大也可以 ...
- CSS3box-shadow属性的使用
每次使用box-shadow,都要查阅资料才能实现对应的效果,现在总结一下,方便以后查看. 一.语法: E {box-shadow: inset x-offset y-offset blur-radi ...
- CF911F Tree Destruction (树的直径,贪心)
题目链接 Solution 1.先找出树的直径. 2.遍历直径沿途的每一个节点以及它的子树. 3.然后对于每个非直径节点直接统计答案,令直径的两个端点为 \(x_1,x_2\) . \[Ans=\su ...
- yield的概念及使用姿势
概念: 当调用Thread.yield方法时,会给线程调度器一个当前线程愿意让出CPU使用的暗示,但是线程调度器可能会忽略这个暗示. 代码演示: public class YieldDemo impl ...
- nginx日志打印请求响应时间
log_format timed_combined '$remote_addr - $remote_user [$time_local] "$request" ' '$stat ...
- 【BZOJ1901】Dynamic Rankings(树套树,树状数组,主席树)
题意:给定一个N个数的序列,要求维护一个数据结构支持以下两种操作: 1:将第X个数改成Y 2:查询第X到第Y个数里第K小的数是多少 n,m<=10000,a[i]<=10^9 思路:单点修 ...
- DataSet的Merge方法合并两张表
原文发布时间为:2008-08-01 -- 来源于本人的百度文章 [由搬家工具导入] UniqueConstraint uc = new UniqueConstraint("pk" ...