php函数 file_get_contents,fsockopen,curl,fopen实现的HTTP GET/POST请求.
接着上篇的 HTTP 简介,直接上php实现代码:
file_get_contents实现POST请求
|
|
file_get_contents实现GET请求(带重试)
|
|
fopen实现GET请求
|
|
fsockopen实现GET请求
|
|
fsockopen实现POST请求
|
|
curl实现GET请求
|
|
curl实现POST请求
|
|
比较
- socket更底层,可以设置基于UDP或是TCP协议去交互; file_get_contents 和 curl 能干的,socket都能干; socket能干的,curl 就不一定能干了.
- curl 效率比file_get_contents()和fsockopen()高一些,原因是CURL会自动对DNS信息进行缓存.
- fsockopen 返回的是没有处理过的数据,包括数据的长度,数据内容和数据的结束符; file_get_contents 和 curl是处理后的内容.
- fsockopen,file_get_contents函数会受到php.ini文件中allow_url_open选项配置的影响.如果该配置关闭了,则该函数也就失效了;而curl不受该配置的影响.
- file_get_contents()函数获取https链接内容的时候,需要php 中mod_ssl的支持(或安装opensll).
- 结论就是,curl 效率及稳定都比 file_get_contents() 要好,fsockopen 也很强大,但是比较偏底层.
参考链接: