php三种post数据方法的区别

php三种post数据方法Curl、socket、file_get_contents 有什么区别

三种方法都要加上 stream_set_blocking 才可以实现无须等待马上返回结果吗?

一般什么情况下用哪种方法,有没有人总结过的,谢啦。。


拖拉机,公交车,轿车 都是运输工具,他们的轮子在转动上有什么区别

没有区别.

curl 不需要加你说的那个什么东东...

curl无脑
socket有脑
file_get_content+stream_context_create半脑残
stream_set_blocking是设置文件描述符非阻塞,可作用于regular files and socket streams,除非你用select+socket,否则对PHP这个语言编程没有益处,也许你期待的是stream_set_timeout。
file_get_contents、curl、socket 三者按顺序来说,一个比一个用起来复杂,灵活度更高。

file_get_contents 只能用一个 url 来获取目标内容(其实是不能做 post 的),基本没什么参数可以控制。

curl 用于在 HTTP/FTP 协议的层级上进行通信,相应地,支持协议规定的一些参数控制。

socket 则是在 TCP 协议的层级上进行通信,当然也有相应的控制参数。如果仅是实现常规的 HTTP 功能,就不要直接用 socket 了。

至于你提到的 stream_set_blocking,应该只在 socket 里面能用到。当 PHP 作为一种 web 页面脚本语言的时候,“无须等待马上返回”这个特性基本没什么用处。


————————————————————————————————
基于CSDN论坛提供的插件扩展功能,自己做了个签名档工具, 分享 给大家,欢迎 技术交流  :)
引用 3 楼 的回复:

file_get_contents、curl、socket 三者按顺序来说,一个比一个用起来复杂,灵活度更高。

file_get_contents 只能用一个 url 来获取目标内容(其实是不能做 post 的),基本没什么参数可以控制。

curl 用于在 HTTP/FTP 协议的层级上进行通信,相应地,支持协议规定的一些参数控制。

socket 则是在 TCP 协议的层级上进……

引用 2 楼 的回复:
curl无脑
socket有脑
file_get_content+stream_context_create半脑残
stream_set_blocking是设置文件描述符非阻塞,可作用于regular files and socket streams,除非你用select+socket,否则对PHP这个语言编程没有益处,也许你期待的是stream_set_timeout。

引用 3 楼 的回复:
file_get_contents、curl、socket 三者按顺序来说,一个比一个用起来复杂,灵活度更高。

file_get_contents 只能用一个 url 来获取目标内容(其实是不能做 post 的),基本没什么参数可以控制。

curl 用于在 HTTP/FTP 协议的层级上进行通信,相应地,支持协议规定的一些参数控制。

socket 则是在 TCP 协议的层级上进行……

引用 6 楼 的回复:
“当 PHP 作为一种 web 页面脚本语言的时候,“无须等待马上返回”这个特性基本没什么用处。”这句话不太明白,例如我想实现在PHP程序里,去执行A程序的时候,B程序无须等待A执行完而继续执行,这时候我用fsockopen+stream_set_blocking

引用 7 楼 的回复:
引用 6 楼 的回复:
2. PHP 程序只需要向通信的对方发送数据,而完全不关心返回结果,甚至对发送是否成功都不关心。



1、你所谓的三种方式都不可能出现“无须等待马上返回"
因为他们都只在执行完毕后才会返回

2、对于你#8的1,由于对方没有返回,所以你不能说“发送成功”。而只能说“已发送”。注意这是用本质的区别的

3、对于你#8的2,由于php内置函数并不提供他说的功能。所以你若不采取一些非常规的手段的话,是做不到的


file_get_contents一般用来获取不需要登录的数据

引用 8 楼 的回复:

引用 7 楼 的回复:
引用 6 楼 的回复:
2. PHP 程序只需要向通信的对方发送数据,而完全不关心返回结果,甚至对发送是否成功都不关心。

又学到东西了。。
最后问一下,如果有那么两个例子:
1、PHP发邮件,因为发邮件需要一些时间,我要的效果是无须得到返回结果,马上提示用户已发送成功。
2、A和B通信,A会不定时向B发送数据通知对方,一开始我是打算做成你所说的第2点,不……

引用 2 楼 的回复:

curl无脑
socket有脑
file_get_content+stream_context_create半脑残
stream_set_blocking是设置文件描述符非阻塞,可作用于regular files and socket streams,除非你用select+socket,否则对PHP这个语言编程没有益处,也许你期待的是stream_set_timeout。

引用 8 楼 的回复:
1、PHP发邮件,因为发邮件需要一些时间,我要的效果是无须得到返回结果,马上提示用户已发送成功。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值