PHP: stream_context_create - Manual

downloads | documentation | faq | getting help | mailing lists | reporting bugs | php.net sites | links | conferences | my php.net

search for in the

stream_context_get_default stream_bucket_prepend

Last updated: Sat, 27 Jan 2007

view this page in

# stream_context_create

(PHP 4 >= 4.3.0, PHP 5)

stream_context_create -- Create a streams context

## Description

resource stream_context_create ( [array options [, array params]] )

Creates and returns a stream context with any options supplied in `options` preset.

`options` must be an associative array of associative arrays in the format `$arr['wrapper']['option'] = $value`. It defaults to an empty array.

`params` must be an associative array in the format `$arr['parameter'] = $value`. Refer to stream_context_set_params() for a listing of standard stream parameters.

> Замечание: The `params` argument was added to `PHP 6.0.0`.

Пример 1. Using stream_context_create()

`<?php
$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.example.com
with additional headers shown above */
$fp = fopen('http://www.example.com', 'r', false, $context);
fpassthru($fp);
fclose($fp);
?>`

See also stream_context_set_option(), and Listing of supported wrappers with context options (Прил. M).

add a note User Contributed Notes
stream_context_create
php at charlesconsulting dot com
13-Jan-2007 07:14
`Here's an example of retrieving a page which requests a username and password using the basic authorization scheme. This calls the w3.org web page validator for a password protected page.
//$fileurl contains page to validate
$validateurl="http://validator.w3.org/check?uri=$fileurl";
$cred = sprintf('Authorization: Basic %s',
base64_encode('username:password') );
$opts = array(
'http'=>array(
'method'=>'GET',
'header'=>$cred)
);
$ctx = stream_context_create($opts);
$validate=file_get_contents($validateurl,false,$ctx);`
sp0n9e at gmail dot com
28-Dec-2006 10:18
`Here's a very simple way to do posts easily without need of cURL or writing an http request by hand using the tcp:// wrapper. I like using contexts just because of their ubiquity and the lack of an optional library such as cURL (though one of the more popular libraries).
<?php
$options = array(
'http'=>array(
'method'=>"POST",
'header'=>
"Accept-language: en\r\n".
"Content-type: application/x-www-form-urlencoded\r\n",
'content'=>http_build_query(array('foo'=>'bar'))
));
$context = stream_context_create($options);
fopen('http://www.example.com/',false,$context);
?>`
dev at zayso dot org
05-Mar-2006 05:31
`Example of a stream for reading a string passed
via a context object.
<?php
/* ----------------------------------------
* Designed to read from a string
*/
class sfStreamStringRead
{
const PROTOCOL = 'stringread'; /* Underscore not allowed */
protected $dataPos = NULL;
protected $dataBuf = NULL;
protected $dataLen = NULL;
function stream_open($path, $mode, $options, &$opened_path)
{
/* Verify context has data */
$contextOptions = stream_context_get_options($this->context);
if (!isset($contextOptions[self::PROTOCOL]['data'])) {
return FALSE;
}
$this->dataBuf = $contextOptions[self::PROTOCOL]['data'];
$this->dataLen = strlen($this->dataBuf);
$this->dataPos = 0;
return TRUE;
}
function stream_read($count){
$ret = substr($this->dataBuf, $this->dataPos, $count);
$this->dataPos += strlen($ret);
return $ret;
}
function stream_eof(){
return $this->dataPos >= $this->dataLen;
}
function stream_tell(){
return $this->dataPos;
}
/* ------------------------------------------
* A few helper functions
*/
static function genURL()
{
return self::PROTOCOL . '://';
}
static function genContext($dataBuf)
{
return stream_context_create(array(
self::PROTOCOL => array(
'data' => $dataBuf,
),
));
}
static function open($dataBuf)
{
return fopen(self::genURL(),'r',FALSE,self::genContext($dataBuf));
}
}
stream_wrapper_register(
sfStreamStringRead::PROTOCOL,
'sfStreamStringRead'
);
$sp = sfStreamStringRead::open("Some String Data\n");
echo fgets($sp);
fclose($sp);
?>`
net_navard at yahoo dot com
09-Dec-2005 10:38
`Hi,you can create an array of parameters(what it's called a stream context),which can be transmitted each time you read or write a stream through a socket.In the below example:
$opts =array('http'=>arra('method'=>"GET",
'header'=>"Accept-language:en\r\n"."Cookie: foo=bar\r\n");
What you're actually doing is create a set of parameters(the protocol to be used,the request method,additional http headers and a cookie) which will be used each time you open a socket connection to request www.example.com.This saves a lot of time if you want to use these parameters (called a stream context) whenever you include them when making a request to www.example.com,instead of having to specify them over and over again.
Using the previous example,say you want to create a stream context,which sends a "Content-Type" http header and utilize it when making a request to www.example.com.Take a look:
$opts = array('http'=>array('method'=>"GET",
'header'=>"Content-Type: text/xml; charset=utf-8");
$context = stream_context_create($opts);
$fp = fopen('http://www.example.com','r',false,$context);
fpassthru($fp);
fclose($fp);
Now,when you make a request to www.example.com,the above http header will be included within the socket and transmitted to the server.Best of luck for you friends,Hossein`
add a note
stream_context_get_default stream_bucket_prepend

Last updated: Sat, 27 Jan 2007
show source | credits | stats | sitemap | contact | advertising | mirror sites
Copyright © 2001-2007 The PHP Group
All rights reserved.
This mirror generously provided by: Yahoo! Inc.
Last updated: Sat Mar 10 10:36:09 2007 PST