文档章节

curl请求封装

chen yuwen
 chen yuwen
发布于 2014/09/05 14:09
字数 307
阅读 16
收藏 0
<?php
namespace Core;

class Curl
{
    /**
     * 创建一个curl请求
     * @param string $method
     * @param string $host
     * @param mix $params
     * @param array $options
     * @return object
     */
    public static function request($host, $options = array())
    {
        $defaults = array (CURLOPT_HEADER => 0, CURLOPT_RETURNTRANSFER => 1, CURLOPT_TIMEOUT => 5, CURLOPT_CONNECTTIMEOUT => 3, CURLOPT_SSL_VERIFYPEER => false, CURLOPT_SSL_VERIFYHOST => false );
        $ch = curl_init ( $host );
        curl_setopt_array ( $ch, ( array ) $options + $defaults );
        $object = new \stdClass ();
        $object->response = curl_exec ( $ch );
        $object->info = curl_getinfo ( $ch );
        $object->error_code = curl_errno ( $ch );
        $object->error = curl_error ( $ch );
        curl_close ( $ch );
        return $object;
    }
    
    /**
     * post请求
     * @param string $host 
     * @param array $data 
     * @param array $options 
     * @return Ambigous <object, stdClass>
     */
    public static function post($host, $params = null, $options = array())
    {
        !is_null($params) && $defaults[CURLOPT_POSTFIELDS] = $params;
        $defaults [CURLOPT_CUSTOMREQUEST] = 'POST';
        $options = $options + $defaults;
        return self::request($host, $options);
    }
    
    /**
     * @param $host string
     * @param $data array
     * @param $options array()
     * get请求
     */
    public static function get($host, $options = array())
    {
        return self::request($host, $options );
    }
    
    /**
     * put请求
     * @param string $host
     * @param mix $params
     * @param array $options
     */
    public static function put($host, $params = null, $options = array())
    {
        !is_null($params) && $defaults [CURLOPT_POSTFIELDS] = $params;
        $defaults [CURLOPT_CUSTOMREQUEST] = 'PUT';
        $options = $options + $defaults;
        return self::request($host, $options);
    }
    
    /**
     * 删除请求
     * @param string $host
     * @param mix $params
     * @param array $options
     */
    public static function delete($host, $params = null, $options = array())
    {
        !is_null($params) && $defaults [CURLOPT_POSTFIELDS] = $params;
        $defaults [CURLOPT_CUSTOMREQUEST] = 'DELETE';
        $options = $options + $defaults;
        return self::request($host, $options);
    }
    
    /**
     * 创建一个scoket请求
     * 
     * @phpcode
     * 
     * $curl_scoket = \Core\Curl::scoket('192.168.1.56')
     * $rs = fwrite($curl_scoket, "xxxxxx")
     * if($rs){
     * 	 fclose($connect)
     * }
     * 
     * @endphpcode
     *
     * @param string $ip 被请求的ip地址
     * @param array $buffer 缓冲大小
     * @param array $blocking [1|0]是否阻塞 
     */
    public static function scoket($target_ip, $buffer = 128, $blocking = 0)
    {
        $connect = stream_socket_client ( $target_ip, $err, $errstr, 30, STREAM_CLIENT_CONNECT );
        if (! $connect)
        {
            throw new \Exception ( "scoket failed to connect:{$err}\n{$errstr}" );
        }
        stream_set_write_buffer ( $connect, $buffer );
        stream_set_blocking ( $connect, $blocking );
        return $connect;
    }
}


© 著作权归作者所有

下一篇: 脚本控制nginx
chen yuwen
粉丝 2
博文 16
码字总数 3880
作品 0
广州
程序员
私信 提问
php curl返回false----curl调用微信创建自定义菜单返回false

在调用微信公众平台的创建自定义菜单接口来创建自定义菜单时遇到一个大坑,php curl返回false一直无法调试通过,代码如下: > //创建菜单 public function menucreate($data){ $url =" https...

wx599c47c7bdcad
2018/04/07
0
0
处理并行 http 请求的 PHP 库 - php-multi-curl

php-multi-curl 是一个简单而有效的库,封装了 curlmulti*,用于处理并行的 http 请求。 要求 PHP 5.4 or later PHP cURL extension 用法 //require '../vendor/autoload.php';use Hhxsv5Php......

好好先森V5
2018/07/11
646
0
微信第三方授权登录返回错误信息: 40029

微信第三方登录授权后,能获取到code码,但是获取gat_token()信息就会返回这样的错误信息: Array( ) 有问题,先查下官方的文档,熟悉下授权流程: 微信第三方授权登录文档:http://blog.csd...

Corwien
2016/05/12
3.5K
0
Python学习笔记-实现探测Web服务质量

pycurl是一个用C语言写的libcurl Python实现,功能非常强大,支持的操作协议后FTP、HTTP、HTTPS、TELNET等,可以理解成Linux下curl命令功能的Python封装,简单易用 本例通过调用pycurl提供的...

谢育政
2017/06/13
0
0
PHP的HTTP解析扩展--php_http_parser

phphttpparser 是基于node.js http-parser的PHP扩展,可用于实现纯异步PHP程序 libcurl提供了异步调用方式,有两种风格: ONE MULTI HANDLE MANY EASY HANDLES:加入多个easy handle后执行c...

coooold
2015/11/18
1K
0

没有更多内容

加载失败,请刷新页面

加载更多

Dubbo-自适应拓展机制

背景 在 Dubbo 中,很多拓展都是通过 SPI 机制进行加载的,比如 Protocol、Cluster、LoadBalance 等,这些都是Dubbo的基础组件。这些基础组件的拓展不是在系统框架启动阶段被加载,而是拓展方...

rock-man
9分钟前
2
0
Kali安装fcitx输入法(五笔)

安装fcitx > sudo apt-get install fcitx-rime fcitx-config-gtk3 重启 > sudo reboot fcitx配置 效果就是这样 配置输入法切换 系统设置...

yeahlife
11分钟前
2
0
IE之css3效果兼容

本文转载于:专业的前端网站▷IE之css3效果兼容 一、兼容css阴影效果(ie滤镜) 1.Shadow,阴影 .shadow { -moz-box-shadow: 3px 3px 4px #000; -webkit-box-shadow: 3px 3px 4px #000; box-sha...

前端老手
14分钟前
2
0
NiushopB2C开源商城功能列表说明:

B2C单商户免费版:PC商城+微商城 B2C单商户标准版:PC商城+微商城组合套餐+阶梯优惠核销功能 B2C单商户企业版:PC商城+微商城拼团+组合套餐阶梯优惠+核销功能 B2C单商户分销版:PC商城+微商城...

niushop-芳
16分钟前
2
0
图片如何转GIF图片呢

如何将生活中拍摄的好玩有趣的图片制作成GIF动图呢?相信很多小伙伴都不知道要如何制作,其实制作方法非常的简单,下面分享一个图片转GIF动图的方法,希望这个方法能够帮助大家在与好友斗图时...

白米稀饭2019
23分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部