关于get与post传递参数容量大小限制区别以及curl函数与file_get_contents的区别(面试)
2018-02-06 21:15
806 查看
这里总结一下get与post请求的区别:
1. get根据浏览器的不同有所不同,但一般不超过1M;
2. post传递参数的上限是2G, 默认能传递的大小8M,关于能传递参数的长度限制可以在php.ini中配置,post_max_size = 长度。
3. get通过url地址传递参数,post是实体数据,可以通过表单提交大量信息。
在网上查阅了一些资料,现在把curl函数与file_get_contents的区别总结一下:
首先明白一点,file_get_contents()函数和curl函数都可以用来抓取远程内容,什么是抓取全程内容呢?个人理解是获取指定url地址所展示的内容,返回结果的形式类似于打开一个网页后,查看网页源代码显示的内容。file_get_contents()也可以用来读取一个文件里的内容,curl函数支持更多的协议,比如FTP,HTTP,HTTPS,FTPS等。php默认不支持curl功能,需要在php.ini文件里开启,具体配置是去掉
;extension=php_curl.dll前面的分号,重启Apache即可。
1. curl函数的用法:
使用curl发送url请求,大致分为四步:
(1) 初始化curl会话
$ch = curl_init();
(2) 设置请求选项,应包含具体的url
curl_setopt($ch, CURLOPT_URL, "http://www.baidu.com");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
(3) 执行一个curl会话并获取相关回复
$response = curl_exec($ch);
(4) 释放curl句柄,关闭一个curl会话
cur_close($ch);
2. curl函数可以进行错误处理
在1中的第三步,可以增加以下代码:
if ($response == false) {
echo "错误信息为:" . curl_error($ch);
}
3. 使用curl模拟发送post请求
$url = "http://www.ltyflyme.com/post.php";
$post_data = array(
"name"
=> "lty",
"url" => "http://www.ltyflyme.com",
"action" => "submit"
);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1); //设置请求类型为post
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data); //添加post数据到请求
$response = curl_exec($ch); //执行请求
curl_close($ch);
echo $response;
上面请求发送到post.php中后,通过print_r($_POST)打印出结果如下:
Array(
[name]
=> lty
[url] =>
http://www.ltyflyme.com
[action]
=> submit
)
4. 文件上传
通过curl发送post请求来实现文件上传。实现的代码如下:
$url = "http://www.ltyflyme.com/upload.php";
$post_data = array ("attachment" => "@D:/blog/img1.jap");
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
$response = curl_exec($ch);
curl_close($ch);
print_r($response);
通过以上代码,将本地的img1.jpg上传到本地服务器upload.php中,如果在upload.php中输出上传的信息,则结果为:
Array([attachment] => Array(
[name]
=> img1.jpg
[type] => application/octet-stream
[tmp_name] => E:\xampp\tmp\phpF27D.tmp
[error] => 0
[size] => 11490
));
5. curl批处理(multi curl)
创建两个curl资源
$ch1 = curl_init();
$ch2 = curl_init();
指定URL和适当的参数
curl_setopt($ch1, CURLOPT_URL, "http://lyy.php.net");
curl_setopt($ch1, CURLOPT_HEADER, 0);
curl_setopt($ch2, CURLOPT_URL, "http://www.php.net");
curl_setopt($ch2, CURLOPT_HEADER, 0);
创建curl批处理句柄
$mh = curl_multi_init();
添加前面两个句柄
curl_multi_add_handle($mh, $ch1);
curl_multi_add_handle($mh, $ch2);
预定义一个状态变量
$active = null;
执行批处理
do {
$mrc
= curl_multi_exec($mh, $active);
} while ($mrc == CURLM_CALL_MULTI_PERFORM);
while ($active && $mrc == CURLM_OK) {
if
(curl_multi_select($mh) != -1) {
do
{
$mrc
= curl_multi_exec($mh, $active);
}
while ( $mrc == CURLM_CALL_MULTI_PERFORM);
}
}
关闭各个句柄
curl_multi_remove_handle($mh, $ch1);
curl_multi_remove_handle($mh, $ch1);
curl_multi_close($mh);
1. get根据浏览器的不同有所不同,但一般不超过1M;
2. post传递参数的上限是2G, 默认能传递的大小8M,关于能传递参数的长度限制可以在php.ini中配置,post_max_size = 长度。
3. get通过url地址传递参数,post是实体数据,可以通过表单提交大量信息。
在网上查阅了一些资料,现在把curl函数与file_get_contents的区别总结一下:
首先明白一点,file_get_contents()函数和curl函数都可以用来抓取远程内容,什么是抓取全程内容呢?个人理解是获取指定url地址所展示的内容,返回结果的形式类似于打开一个网页后,查看网页源代码显示的内容。file_get_contents()也可以用来读取一个文件里的内容,curl函数支持更多的协议,比如FTP,HTTP,HTTPS,FTPS等。php默认不支持curl功能,需要在php.ini文件里开启,具体配置是去掉
;extension=php_curl.dll前面的分号,重启Apache即可。
1. curl函数的用法:
使用curl发送url请求,大致分为四步:
(1) 初始化curl会话
$ch = curl_init();
(2) 设置请求选项,应包含具体的url
curl_setopt($ch, CURLOPT_URL, "http://www.baidu.com");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
(3) 执行一个curl会话并获取相关回复
$response = curl_exec($ch);
(4) 释放curl句柄,关闭一个curl会话
cur_close($ch);
2. curl函数可以进行错误处理
在1中的第三步,可以增加以下代码:
if ($response == false) {
echo "错误信息为:" . curl_error($ch);
}
3. 使用curl模拟发送post请求
$url = "http://www.ltyflyme.com/post.php";
$post_data = array(
"name"
=> "lty",
"url" => "http://www.ltyflyme.com",
"action" => "submit"
);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1); //设置请求类型为post
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data); //添加post数据到请求
$response = curl_exec($ch); //执行请求
curl_close($ch);
echo $response;
上面请求发送到post.php中后,通过print_r($_POST)打印出结果如下:
Array(
[name]
=> lty
[url] =>
http://www.ltyflyme.com
[action]
=> submit
)
4. 文件上传
通过curl发送post请求来实现文件上传。实现的代码如下:
$url = "http://www.ltyflyme.com/upload.php";
$post_data = array ("attachment" => "@D:/blog/img1.jap");
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
$response = curl_exec($ch);
curl_close($ch);
print_r($response);
通过以上代码,将本地的img1.jpg上传到本地服务器upload.php中,如果在upload.php中输出上传的信息,则结果为:
Array([attachment] => Array(
[name]
=> img1.jpg
[type] => application/octet-stream
[tmp_name] => E:\xampp\tmp\phpF27D.tmp
[error] => 0
[size] => 11490
));
5. curl批处理(multi curl)
创建两个curl资源
$ch1 = curl_init();
$ch2 = curl_init();
指定URL和适当的参数
curl_setopt($ch1, CURLOPT_URL, "http://lyy.php.net");
curl_setopt($ch1, CURLOPT_HEADER, 0);
curl_setopt($ch2, CURLOPT_URL, "http://www.php.net");
curl_setopt($ch2, CURLOPT_HEADER, 0);
创建curl批处理句柄
$mh = curl_multi_init();
添加前面两个句柄
curl_multi_add_handle($mh, $ch1);
curl_multi_add_handle($mh, $ch2);
预定义一个状态变量
$active = null;
执行批处理
do {
$mrc
= curl_multi_exec($mh, $active);
} while ($mrc == CURLM_CALL_MULTI_PERFORM);
while ($active && $mrc == CURLM_OK) {
if
(curl_multi_select($mh) != -1) {
do
{
$mrc
= curl_multi_exec($mh, $active);
}
while ( $mrc == CURLM_CALL_MULTI_PERFORM);
}
}
关闭各个句柄
curl_multi_remove_handle($mh, $ch1);
curl_multi_remove_handle($mh, $ch1);
curl_multi_close($mh);
相关文章推荐
- curl和file_get_contents 区别以及各自的优劣
- 关于post和get传递参数的区别
- 使用PHP的curl扩展实现跨域post请求,以及file_get_contents()百度短网址例子
- 关于微信等app请求服务器,file_get_contents()函数和CURL用法
- 关于file_get_contents返回为空或函数不可用的解决方案
- php 模拟浏览器 发送 post 和 get 请求(兼容curl + file_get_contents)
- 关于http get和form表单post提交数据大小限制
- php中 curl, fsockopen ,file_get_contents 三个函数
- HTTP协议规范的get和post对传递的参数的最大长度没有限制
- Qt:postEvent 与 customEvent() 函数 进行异步通信; 以及参数的传递 // 防止界面卡死;;
- 关于php 中file_put_contents 和fwrite file_get_contents和curl
- fopen,file_get_contents,curl的区别[zz]
- 使用Curl、socket、file_get_contents三种方法POST提交数据
- php中使用Curl、socket、file_get_contents三种方法POST提交数据
- fopen,file_get_contents,curl的区别
- PHP利用Curl、socket、file_get_contents POST数据
- php中 curl, fsockopen ,file_get_contents 三个函数 比较
- 通过Curl、socket、file_get_contents三种方法使用POST提交数据
- php中 curl, fsockopen ,file_get_contents 三个函数
- curl、fopen和file_get_contents区别