• 技术文章 >后端开发 >php教程

    PHP stream_context_create()作用和用法分析_PHP教程

    2016-07-21 15:31:28原创396

    作用:创建并返回一个文本数据流并应用各种选项,可用于fopen(),file_get_contents()等过程的超时设置、代理服务器、请求方式、头信息设置的特殊过程。
    函数原型:resource stream_context_create ([ array $options [, array $params ]] )
    用法
    例子一:

    复制代码 代码如下:

    $opts = array( 'http-->array(
    'method'=>"GET",
    'header'=>"Accept-language: en\r\n" .
    "Cookie: foo=bar\r\n"
    )
    );
    $context = stream_context_create($opts);
    /* Sends an http request to www.jb51.net
    with additional headers shown above */
    $fp = fopen('http://www.jb51.net', 'r', false, $context);
    fpassthru($fp);
    fclose($fp);
    ?>

    例子二:
    复制代码 代码如下:

    $opts = array( 'http-->array(
    'method'=>"GET",
    'header'=>"Accept-language: en\r\n" .
    "Cookie: foo=bar\r\n"
    )
    );
    $context = stream_context_create($opts);
    ?>
    You would setup the header this way:
    $opts = array( 'http-->array(
    'method'=>"GET",
    'header'=>array("Accept-language: en",
    "Cookie: foo=bar",
    "Custom-Header: value")
    )
    );
    $context = stream_context_create($opts);
    ?>

    例子三:
    复制代码 代码如下:

    $opts = array('http' => array('proxy' => 'tcp://127.0.0.1:8080', 'request_fulluri' => true));
    $context = stream_context_create($opts);
    $data = file_get_contents('http://www.jb51.net', false, $context);
    echo $data;
    ?>

    例子四:
    复制代码 代码如下:

    function do_post_request($url, $postdata, $files = null)
    {
    $data = "";
    $boundary = "---------------------".substr(md5(rand(0,32000)), 0, 10);
    //Collect Postdata
    foreach($postdata as $key => $val)
    {
    $data .= "--$boundary\n";
    $data .= "Content-Disposition: form-data; name=\"".$key."\"\n\n".$val."\n";
    }
    $data .= "--$boundary\n";
    //Collect Filedata
    foreach($files as $key => $file)
    {
    $fileContents = file_get_contents($file['tmp_name']);
    $data .= "Content-Disposition: form-data; name=\"{$key}\"; filename=\"{$file['name']}\"\n";
    $data .= "Content-Type: image/jpeg\n";
    $data .= "Content-Transfer-Encoding: binary\n\n";
    $data .= $fileContents."\n";
    $data .= "--$boundary--\n";
    }
    $params = array('http' => array(
    'method' => 'POST',
    'header' => 'Content-Type: multipart/form-data; boundary='.$boundary,
    'content' => $data
    ));
    $ctx = stream_context_create($params);
    $fp = fopen($url, 'rb', false, $ctx);
    if (!$fp) {
    throw new Exception("Problem with $url, $php_errormsg");
    }
    $response = @stream_get_contents($fp);
    if ($response === false) {
    throw new Exception("Problem reading data from $url, $php_errormsg");
    }
    return $response;
    }
    //set data (in this example from post)
    //sample data
    $postdata = array(
    'name' => $_POST['name'],
    'age' => $_POST['age'],
    'sex' => $_POST['sex']
    );
    //sample image
    $files['image'] = $_FILES['image'];
    do_post_request("http://www.jb51.net", $postdata, $files);
    ?>

    www.bkjia.comtruehttp://www.bkjia.com/PHPjc/322991.htmlTechArticle作用:创建并返回一个文本数据流并应用各种选项,可用于fopen(),file_get_contents()等过程的超时设置、代理服务器、请求方式、头信息设置的...

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:PHP stream context create 作用 用法 分析 作用 创建 返回 一个 文本 数据流 应用
    上一篇:php函数之子字符串替换 str_replace_PHP教程 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • 一文详解PHP实现职责链设计模式(附代码示例)• php实现通过JSON RPC与go通讯(附代码)• 浅析怎么使用PHP做异步爬取数据• PHP8.3要有新函数了!(json_validate函数说明)• 设计API接口时,要注意这些地方!
    1/1

    PHP中文网