因近期网站更换新框架,在新旧框架未完全替换完成期间,web网站新增的所有功能模块,皆需要CI跟laravel进行数据交互处理
所以就涉及到curl的使用
废话不多说,上图
curl数据传递
首先使用curl的时候先要初始化:curl_init()
然后需要进行一系列变量的设置:curl_setopt()
获取curl执行的结果:curl_exec()
最后释放curl:curl_close()
其中这里强制使用以下两个数据信息是为了避免首次访问的速度异常的慢的问题
1. curl_setopt($curl, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_0); //强制协议为1.0
2. curl_setopt($curl, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4 ); //强制使用IPV4协议解析域名
同时3. curl_setopt($ch, CURLOPT_HTTPHEADER, array(''Expect: '')); //头部要送出'Expect: '也可以防止访问过慢
具体curl_setopt变量的设置信息可参考:curl_setopt函数
在使用curl做POST的时候, 当要POST的数据大于1024字节的时候, curl并不会直接就发起POST请求, 而是会分为俩步,
1. 发送一个请求, 包含一个Expect:100-continue, 询问Server使用愿意接受数据
2. 接收到Server返回的100-continue应答以后, 才把数据POST给Server
这是libcurl的行为.
于是,这样就有了一个问题, 并不是所有的Server都会正确应答100-continue, 比如lighttpd, 就会返回417 “Expectation Failed”, 则会造成逻辑出错,,
解决方法如上所示CURLOPT_HTTPHEADER变量参数的设置
现在很多服务器都开启了 IPv6 却没有路由,无法真正工作,反而导致一些不可预料的问题。