php中的http是什么意思,请问php中三种http请求方式有什么区别呢(cURL,stream,socket)...

谷歌查询到的资料都比较模糊,能不能从业务以及技术的角度比较这三种方式有什么异同点呢?最好可以结合guzzle代码分析

回答

socket 就是最底层的 Socket 通信, 如果要访问 HTTP, 你得完全手写, 这是非常底层的方式, 除非你有特殊需要, 不然不建议这么做. 所以这个可以先排除在外.

curl 实际上是一个命令行界面的网络工具, 然后 libcurl 则是一个为 C 编写的网络访问库, 它并不仅仅支持 HTTP, 还支持 FTP, Gopher, POP3, IMAP, SMTP 等非常多的协议. 因为它非常成熟实用, 所以很早就被用 PHP 扩展的方式兼容了起来, 当然这个扩展需要依赖 libcurl 的代码, 也可以认为是当下 PHP 最主流的访问 HTTP 的方式

stream 的 HTTP 上下文是 PHP 内建的标准 I/O 接口提供的, 通过 stream 的 HTTP 上下文你可以用 fopen, fread 或者 streamWrapper 这类直接操作本地文件 I/O 的函数和类来实现统一访问

从性能和内存足迹的层面来说, 我记得 curl 是最好的, 你可以自己实际测试一下.

有一个很有意思的情况是, PHP 的 curl 扩展也提供了 curl 的上下文, 也就是说, 可以用 curl 封装掉 PHP 的 Stream 访问的 HTTP 上下文 的实现, 在这种情况下, 虽然你走的是 Stream, 但底层实际上调用的还是 curl, 详见: https://www.php.net/manual/zh/context.curl.php

注: 这里提到的上下文 Context 是 PHP Stream 流内的一个概念, 用以指具体的数据流(不管是网络还是本地I/O)的协议: https://www.php.net/manual/zh/context.php

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值