Home  >  Article  >  Backend Development  >  How to use cURL to send requests, upload images and batch processing in PHP

How to use cURL to send requests, upload images and batch processing in PHP

不言
不言forward
2018-10-15 14:24:583069browse

The content this article brings to you is about the implementation method of using cURL to send requests, upload images and batch processing in PHP. It has certain reference value. Friends in need can refer to it. I hope it will be helpful to you. .

cURL is a tool that uses URL syntax to transfer files and data. There is curl extension in PHP, which is generally used to implement network crawling, simulate sending get post requests, and file uploads.

The basic steps to establish curl in php are as follows:

1. Initialization

2. Set options, including url

3. Execute and get the results

4. Release the curl handle.

In work and study, I also often use curl. Since the various options are difficult to remember when using curl to set options and need to be referenced, some commonly used examples are recorded here for later reference.

Example 1: Capturing web page data (taking Lashou.com’s open api as an example, it is also a get request)

<?php
header("Content-type: text/html; charset=utf-8"); 
$ch = curl_init();//初始化

/*============开始设置curl各种选项================*/
curl_setopt($ch, CURLOPT_URL, "http://open.lashou.com/opendeals/lashou/city.xml");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);


$html = curl_exec($ch);//执行句柄,获取返回内容

curl_close($ch);//释放句柄

echo $html

If you use this method to send a get request, just append the parameters to the end of the url, such as curl_setopt($ch, CURLOPT_URL, "http://localhost/tqj/date/p822.php?name=yyyyy");

Example 2: Using curl to send a post request

<?php
$uri = "http://localhost/tqj/date/p822.php";

// post参数数组
$data = array (
        &#39;name&#39; => &#39;tianquanjun&#39;,
        &#39;password&#39; => &#39;tianquanjun&#39;,
);

//初始化
$ch = curl_init ();

//各种项设置,网上参考而来,可以查看php手册,自己设置
curl_setopt ( $ch, CURLOPT_URL, $uri );
curl_setopt ( $ch, CURLOPT_POST, 1 );//post方式
curl_setopt ( $ch, CURLOPT_HEADER, 0 );
curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1 );
curl_setopt ( $ch, CURLOPT_POSTFIELDS, $data );

//执行
$return = curl_exec ( $ch );
//释放
curl_close ( $ch );

print_r($return);

Example 3: Curl process debugging and error message handling

<?php
$uri = "http://localhost/tqj/date/p822.php";

// post参数数组
$data = array (
        &#39;name&#39; => &#39;tianquanjun&#39;,
        &#39;password&#39; => &#39;tianquanjun&#39;,
);

//初始化
$ch = curl_init ();

//各种项设置,网上参考而来,可以查看php手册,自己设置
curl_setopt ( $ch, CURLOPT_URL, $uri );
curl_setopt ( $ch, CURLOPT_POST, 1 );//post方式
curl_setopt ( $ch, CURLOPT_HEADER, 0 );
curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1 );
curl_setopt ( $ch, CURLOPT_POSTFIELDS, $data );

//执行
$return = curl_exec ( $ch );

//容错机制
if($return === false){
    var_dump(curl_error($ch));
    }

//curl_getinfo()获取各种运行中信息,便于调试 
$info = curl_getinfo($ch);

echo "执行时间".$info[&#39;total_time&#39;].PHP_EOL;

//释放
curl_close ( $ch );

print_r($return);
?>

Use curl_error() to obtain error information, and curl_getinfo() to obtain running related information.

Example 4: Upload pictures and get return information.

Upload images across domains and obtain return information at the same time. This can be very useful. It is similar to post. Please note that an @ symbol is added before the file

<?php
$uri = "http://localhost/tqj/date/p822.php";

// post参数数组
$data = array (
        &#39;author&#39; => &#39;tianquanjun&#39;,
        &#39;upload&#39; => &#39;@C:\Users\tianquanjun.DANGDANG\Pictures\a.jpg&#39;,
);

//初始化
$ch = curl_init ();

//各种项设置,网上参考而来,可以查看php手册,自己设置
curl_setopt ( $ch, CURLOPT_URL, $uri );
curl_setopt ( $ch, CURLOPT_POST, 1 );//post方式
curl_setopt ( $ch, CURLOPT_HEADER, 0 );
curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1 );
curl_setopt ( $ch, CURLOPT_POSTFIELDS, $data );

//执行
$return = curl_exec ( $ch );

//容错机制
if($return === false){
    var_dump(curl_error($ch));
    }

//curl_getinfo()获取各种运行中信息,便于调试 
$info = curl_getinfo($ch);

echo "执行时间".$info[&#39;total_time&#39;].PHP_EOL;

//释放
curl_close ( $ch );

print_r($return);

Example 5: curl batch processing.

Curl has an advanced feature, batch handlers. Allows opening multiple curl links.

Batch processing is to open multiple curl handles, assign these handles to a batch handle, and then wait for processing to complete in a while loop. curl_multi_exec() can be called multi-threaded processing, but it still belongs to the asynchronous category.

<?php
header("Content-type: text/html; charset=gbk");
$urls=array(&#39;http://www.baidu.com&#39;,&#39;http://www.qq.com/&#39;);
$ch=array();
//批处理句柄
$mh=curl_multi_init();

//打开多个curl句柄,并指派给一个批处理句柄
$ch[0]=curl_init($urls[0]);
$ch[1]=curl_init($urls[1]);
for($i=0;$i<2;$i++)
{
curl_setopt($ch[$i],CURLOPT_RETURNTRANSFER,1);
curl_multi_add_handle($mh,$ch[$i]);

}
$running = NULL;
do{
    usleep(10000);
    curl_multi_exec($mh,$running);//实现批处理,可以看做curl多线程,实际是异步范畴
}while($running>0);
$res=array();
for($j=0;$j<2;$j++)
{
    $res[$j]=curl_multi_getcontent($ch[$j]);
}

//关闭句柄
for($k=0;$k<2;$k++)
{
    curl_multi_remove_handle($mh,$ch[$k]);
}
curl_multi_close($mh);

print_r($res);


?>

Basically lists some commonly used examples. If you want to use curl flexibly, you still have to be familiar with curl's various settings. These settings are the soul of curl.

The above is the detailed content of How to use cURL to send requests, upload images and batch processing in PHP. For more information, please follow other related articles on the PHP Chinese website!

Statement:
This article is reproduced at:cnblogs.com. If there is any infringement, please contact admin@php.cn delete