首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

3分钟短文:PHP 内置的 file_get_contents 用来请求网络资源

引言 使用PHP,是否可以使用 file_get_contents() 发送HTTP标头? 你可以从php.ini文件中发送用户代理。...PHP都准备好电池了 你想要的功能都在手册里了。有那么多大神,为我们准备了如此好用的方法。而且,文档的示例代码中,直接给贴出了,等着你去发现。 ?...像正常的HTTP请求一样,你想手动设置请求头 user-agent,那么加上就是: ? 如果想要拿到请求体中的header信息,也很好办。有以为开发者已经封装好了函数: ?...写在最后 file_get_contents 这个函数设计的还是太过 unix 化了,把一切的网络资源视作文件,无论本地,或者远程服务器的。...但是作为 http 请求,它还太简单,太稚嫩,扛不起复杂的网络请求场景。 我们经常会使用专业成熟的http库处理网络请求,比如 GuzzleHttp,可定制化极强。毕竟术业有专攻啊。

49820
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    PHP加载大文件时require和file_get_contents的性能对比

    如果把这个配置文件的内容序列化后,用file_get_contents获取文件然后反序列化的方法来加载,就会快很多。 经过近两周的研究,大概知道了其中的原因。...首先,还从PHP的流程说起,PHP其实有两个流程,一个是启动的流程,一个是响应请求的流程。...PHP作为Apache的一个模块,向Apache注册了两个函数,一个是Aapche启动的时候运行的函数:sapi_startup;一个是Apache接收到请求的时候调用的函数:php_handler 启动的流程...: 这两个函数的执行可以分成两部分:读取文件和构造配置文件里面的数组; 先说读取文件,require读取的机制是,以8192字节大小的buffer循环将文件读入内存;而file_get_contents...内部是函数调用,而require是一个内置的opcode,所以调用file_get_contents时的开销要比require略大; 所以,小文件的时候,file_get_contents 读取文件时

    54610

    PHP允许前端跨域请求的相关请求头设置、文件下载

    CORS 请求分成两类:简单请求(simple request)和非简单请求(not-so-simple request)。 PHP中的 header 函数用于设置响应头。...); 3.允许请求头 header('Access-Control-Allow-Headers: *'); 输出一个文件 请求头中的文件名尽量使用urlcode编码,因为部分浏览器无法处理直接的中文名文件...attachment; filename='.basename($file)); header('content-length:'.filesize($file)); echo file_get_contents...($file); 跨域的验证码 JS无法读取设置为httponly的cookie,跨域名设置cookie会失败(默认是当前请求的接口的域名,跨域名需要单独设置指定域名) 图片如果没有开启防盗链,是不受跨域限制的...,在PHP输出验证码的时候 验证码会正常展示, 但由于跨域名的原因Cookie不会被正常保存。

    1.7K20

    让Apache解析html文件中的php语句

    推荐软件Axure 但是,当生成html文件之后,你发现还要写php语句对数据库进行操作时,就会遇到一些问题。...首先,对于一些不需要从数据库返回结果的操作,只需要在html文件的头部添加一个到相应php语句链接跳转即可,然后利用JavaScript语句做一些反馈提示,就基本能够解决问题了。...这时候,你会发现,要想让php代码和html代码完全分离,似乎不是那么容易了,当然,.php的文件中本身html语句是可以被解析的,但是,如果你使用Axure等软件的话,就……发现太麻烦了,所以,为了简便...,就可以把php语句写到HTML文件中,默认Apache是不会解析php代码的,所以,需要更改一些配置,来让Apache解析。...(1)添加上述代码后,必须重启Apache服务器; (2)html文件必须放在Apache配置文件httpd.conf中DocumentRoot指定的目录下,否则无法运行,见下图 ?

    2K20

    Nginx+FastCGI到底是谁影响超时时间

    request_terminate_timeout的值如果设置为0或者过长的时间,可能会引起file_get_contents的资源问题。...如果file_get_contents请求的远程资源如果反应过慢,file_get_contents就会一直卡在那里不会超时。...真正能够控制 PHP 脚本最大执行时间的是 php-fpm.conf 配置文件中的request_terminate_timeout参数。...这样,当所有的 php-cgi 进程都卡在 file_get_contents() 函数时,这台 Nginx+PHP 的 WebServer 已经无法再处理新的 PHP 请求了,Nginx 将给用户返回...解决办法是request_terminate_timeout设置为10s或者一个合理的值,或者给file_get_contents加一个超时参数 如果常有请求超时,请打开php-fpm的慢日志,通过日志来确认评估超时时间

    58710

    php+nginx中的php.ini,php-fpm.conf,nginx.conf【php】

    一、解释一下 1.php-fpm.conf:是PHP-FPM特有的配置文件,是PHP-FPM进程管理器的配置文件 2.php.ini:是php模式中必须的配置文件, 是PHP解析器的配置文件 3.nginx.conf...只处理html等静态文件,但是随着技术的发展,出现了像php等动态语言。...有没有发现很浪费资源? 4.于是,出现了cgi的改良版本,fast-cgi。fast-cgi每次处理完请求后,不会kill掉这个进程,而是保留这个进程,使这个进程可以一次处理多个请求。...与file_get_contents request_terminate_timeout的值如果设置为0或者过长的时间,可能会引起file_get_contents的资源问题。...如果file_get_contents请求的远程资源如果反应过慢,file_get_contents就会一直卡在那里不会超时。

    1.1K10

    PHP模拟发送POST请求之四、加强file_get_contents()发送POST请求

    使用了笨重fsockopen()方法后,我们开始在PHP函数库里寻找更简单的方式来进行POST请求,这时,我们发现了PHP的文件函数也具有与远程URL交互的功能。...$offset:读取的内容相对文件开始内容的偏移字节,我们读取网页内容,要保证HTML文档的完整性,所以可以设置为0或者不设置,默认为0。...通过file_get_contents发送POST请求的重点就在$context参数上面,我们用stream_context_create()函数设置上下文。...对于像 file_get_contents()、file_put_contents()、readfile()直接使用文件名操作而没有文件句柄的函数来说更有用。...]] ) 我们看到,通过传入设置数组用此函数来获取一个资源类型的上下文选项。

    2.1K80

    网站提示file_get_contents(): SSL: Handshake timed out错误怎么解决

    导航主题模板在部分网友的网站会偶尔提示:file_get_contents(): SSL: Handshake timed out的错误,网友的站点是php5.6版本,但也不是所有的都会出现此错误提示,...原因是:在服务器上使用file_get_contents() 函数请求https 协议的url文件时会报错误,无法正确读取文件内容,在PHP中file_get_contents() 函数是用于将文件的内容读入到一个字符串中...主题模板有问题就解决,按照百度经验的教程有好几种方法来解决,有的说修改php.ini文件,在php.ini文件里找到 ;extension=php_openssl.dll ,去掉前面的分号“;”,然后重启...($stream_opts)); 如上代码,估计是好用的,但是我并没有测试,因为错误是偶尔出现,所以没办法测试,其中“response”自定义函数,可以直接替换导航主题incloud.php文件中的“html...之前,在代码中找到“html = file_get_contents('https://top.baidu.com/board?

    5K20

    简易聊天室的实现 - Ajax轮询与长轮询

    Ajax轮询   对于Ajax轮询, 我们可以简单的一笔带过,因为他真的太消耗服务器资源了。   ...Ajax轮询前端 index.html通过每隔一段时间访问后端 server.php并通过Jquery更新页面信息,后端负责判断是否有新信息通过json的形式传递给前端,我们来看一个样例: 前端:   而这种Ajax轮询的方式无论如何都会每1s访问一次服务端,前一次请求完成后,无论有无结果返回,一秒之后下一次请求又会发出。这就叫做Ajax轮询。...这边会导致严重消耗服务器资源,并且存在可能1s的延迟问题。(上述示例仅供方法参考,并不是最终样式)我们可以用伪代码来演示以下实现原理: php while(true) { file_get_contents('server.php'); //获取后台数据 sleep(1); //休息一秒继续获取 }

    1.4K11

    SSRF漏洞原理解析

    在页面源码中查找访问的资源地址,如果该资源地址类型为http://www.xxx.com/a.php?image=地址就可能存在SSRF漏洞。...总的来说,需要从远程服务器请求资源的网站都有可能存在SSRF漏洞。 0x03 绕过方法: 部分存在漏洞,或者可能产生SSRF的功能中做了白名单或者黑名单的处理,来达到阻止对内网服务和资源的攻击和访问。...,PHP中下面函数的使用不当会导致SSRF: file_get_contents() fsockopen() curl_exec() file_get_contents() 这个函数的作用是将整个文件读入一个字符串中...比如:下面的代码执行结果是输出test.txt文件里面的字符串。 php echo file_get_contents(“test.txt”); ?...与上面大致相同,不同之处是它这里使用file_get_contents函数进行文件的读取执行,而file_get_contents函数可以对本地文件进行读取,也可以对远程文件进行读取,例如:

    9.1K36

    fsockopencurlfile_get_contents效率比较

    前面小节 PHP抓取网络数据的6种常见方法 谈到了 fsockopen,curl与file_get_contents 的使用方法,虽然它们都能达到同一个使用目的,但是它们之间又有什么区别呢?...file_get_contents 需要php.ini里开启allow_url_fopen,请求http时,使用的是http_fopen_wrapper,不会keeplive的话curl是可以的。...file_get_contents()单个执行效率高,返回没有头的信息。 这个是读取一般文件的时候并没有什么问题,但是在读取远程问题的时候有可能就会出现问题。...这样在多次请求多个链接时,curl效率会好一些。 fopen / file_get_contents函数会受到php.ini文件中allow_url_open选项配置的影响。...PS:file_get_contents()函数获取https链接内容的时候,需要php 中mod_ssl的支持(或安装opensll)。

    47620

    几处cms路径穿越

    正文 1.某cms的任意文件读取和删除 这个cms目前还是处于更新的状态,来到更多功能-模板管理-新建文件:发现会报错: 根据链接: 往回看下源码: function addFile() {...$item; delFile($path, true); } } /*清除旧升级备份包,保留最后一个备份文件*/ $backupArr...'log');//调试时生成的日志文件 return true; } 原理跟上面类似,也是直接拼接: 2.某cms任意文件下载 该cms也是处于更新状态,系统管理-数据还原-备份下载 请求包...一、后台附件管理-图片管理可删除图片, 得到删除包: ids和path可控,找到对应方法:admincms\contraller\upfile.contraller.php 传入的ids 用 “.../s,txt, 的形式 二、admincms\contraller\template.contraller.php 找到模板管理,选中一个文件点击删除: 得到删除包 发现id[]是可控的,对应到源码

    73920

    SSRF 服务端请求伪造攻击,程序员必掌握

    ,通过访问默认文件实现 攻击内外网的 web 应用,主要是使用 GET 参数就可以实现的攻击(比如 Struts2,sqli 等) 利用 file 协议读取本地文件等 SSRF 漏洞出现的场景 能够对外发起网络请求的地方...,就可能存在 SSRF 漏洞 从远程服务器请求资源(Upload from URL,Import & Export RSS Feed) 数据库内置功能(Oracle、MongoDB、MSSQL、Postgres...php if (isset($_POST['url'])) { $content = file_get_contents($_POST['url']); $filename ='....> 这段代码使用 file_get_contents 函数从用户指定的 URL 获取图片。然后把它用一个随机文件名保存在硬盘上,并展示给用户。 2.fsockopen() 这段代码使用 fsockopen 函数实现获取用户制定 URL 的数据(文件或者 HTML)。这个函数会使用 socket 跟服务器建立 TCP 连接,传输原始数据。

    1.1K30
    领券