入门客AI创业平台(我带你入门,你带我飞行)
博文笔记

【php】PHP中file_get_contents()与file_put_contents()函数细节详解

创建时间:2012-12-20 投稿人: 浏览次数:11396

file_get_contents函数

一般的也就是使用file_get_contents($url),但是关于这个函数还有很多没有注意到的地方。

先看关于手册:

file_get_contents(path,include_path,context,start,max_length)

参数

描述

path

必需。规定要读取的文件。

include_path

可选。如果也想在 include_path 中搜寻文件的话,可以将该参数设为 “1″。

context

可选。规定文件句柄的环境。

context 是一套可以修改流的行为的选项。若使用 null,则忽略。

start

可选。规定在文件中开始读取的位置。该参数是 PHP 5.1 新加的。

max_length

可选。规定读取的字节数。该参数是 PHP 5.1 新加的。

——————-可以选择读取文件位置和长度这个选项不错。但是关于context的选项是做什么用的呢?

强大的context——stream_context_create

context 就是文本流的意思。而在php中创建文本流的函数是:stream_context_create

参看官方手册:http://php.net/manual/en/function.stream-context-create.php

stream_context_create是用来创建打开文件的上下文件选项的,比如用POST访问,使用代理,发送header等。看到没有之前用curl实现的所谓代理,post,header方法都可以使用file_get_contents+stream_context_create来实现。

之前在《PHP批量采集下载美女图片》中抱怨file_get_contents采集图片时候经常会遇到慢资源造成cpu负载过高,不能设置超时时间,最后使用curl来实现,其实file_get_contents也可以设置超时时间。

file_get_contents超时设置

1 $opts = array("http"=>array("timeout"=>10));
2 $context = stream_context_create($opts);
3 echo file_get_contents($url,false,$context);

这样就可以实现设置10s的超时时间

更强大的file_get_contents

file_get_contents实现post

参看官方手册的例子

1 $opts = array("http" =>
2   array(
3     "method"  => "POST",
4     "header"  => "Content-Type: text/xmlrn".
5       "Authorization: Basic ".base64_encode("$https_user:$https_password")."rn",
6     "content"
声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。