日志

PHP中使用cURL请求

cURL是一个非常强大的工具,它支持多种多样的协议(HTTP,FTP,TELNET等等)进行数据传输.因而cURL不受限于它能干什么,不管是基本的HTTP请求还是复杂的FTP上传或者是与需要验证处理的HTTPS网站进行交互,cURL都可以胜任。PHP通过cURL函数库对cURL提供了支持,下面主要介绍PHP cURL中使用最频繁的GET、POST方法和返回数据的处理,以及一些有用的cURL设置项。

  • 基本

在我们通过cURL请求进行各样操作之前,首先我们需要初始化一个cURL的实例对象,我们可以通过调用curl_init()这个方法来完成,它返回一个cURL的句柄。该方法提供一个可选参数,可以通过该参数设置要发送请求的URL地址,在此我们先不传参,下面会用另一种方式进行设置。

  • 设置

当我们拿到cURL的句柄后,我们就可以对其进行一系列的参数设定,下面是一些主要的设置项:

CURLOPT_RETURNTRANSFER

true:将返回的数据以文件流的形式返回;false:将返回的数据直接输出显示;

CURLOPT_CONNECTTIMEOUT

发起连接时等待的时间(秒);

CURLOPT_TIMEOUT

请求超时时间(秒);

CURLOPT_USERAGENT

设置请求的用户代理;

CURLOPT_URL

设置请求的URL地址

CURLOPT_POST

是否以POST方式发起请求

CURLOPT_POSTFIELDS

POST参数值

我们可以通过调用curl_setopt()方法设定指定的cURL参数值,该方法接收三个参数,分别是cURL句柄设置项(例如CURLOPT_URL)和设置值

<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://hejunhao.me');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 5);

当我们需要设置大量参数时,显然重复使用大量curl_setopt并不方便,我们可以通过curl_setopt_array(),一次性设置大量参数。

<?php
$ch = curl_init();
$options = array(
    CURLOPT_URL => 'http://hejunhao.me',
    CURLOPT_HEADER => 0,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_NOPROGRESS => False,
    CURLOPT_TIMEOUT => 5
);
curl_setopt_array($ch, $options);
  • 发送请求

当我们设置好所有参数,准备发起请求时,我们通过调用curl_exec()方法来执行我们的请求,该方法接收一个cURL句柄参数。请求执行后会有三种可能的返回情况:
阅读全文

Git中的fetch和pull

Git中从远程的分支获取最新的版本到本地有这样2个命令:git fetch、git pull

1. git fetch:相当于是从远程获取最新版本到本地,不会自动merge

git fetch origin master
git log -p master..origin/master
git merge origin/master

以上命令的含义:
首先从远程的origin的master主分支下载最新的版本到origin/master分支上
然后比较本地的master分支和origin/master分支的差别
最后进行合并

上述过程其实可以用以下更清晰的方式来进行:

git fetch origin master:tmp
git diff tmp
git merge tmp

从远程获取最新的版本到本地的test分支上
之后再进行比较合并

2. git pull:相当于是从远程获取最新版本并merge到本地

git pull origin master

上述命令其实相当于git fetch 和 git merge
在实际使用中,git fetch更安全一些
因为在merge前,我们可以查看更新情况,然后再决定是否合并