转
http://huangliangfeixu.blog.163.com/blog/static/189747062201142510383782/
stream_context_create作用:
创建并返回一个文本数据流并应用各种选项,可用于fopen(),file_get_contents()等过程的超时设置、代理服务器、请求方式、头信息设置的特殊过程。
函数原型:resource stream_context_create ([ array $options [, array $params ]] )
在使用file_get_contents函数的时候,经常会出现超时的情况,在这里要通过查看一下错误提示,看看是哪种错误,比较常见的是读取超时,这种情况大家可以通过一些方法来尽量的避免或者解决。这里就简单介绍两种:
一、增加超时的时间限制
这里需要注意:set_time_limit只是设置你的PHP程序的超时时间,而不是file_get_contents函数读取URL的超时时间。一开始以为set_time_limit也能影响到file_get_contents,后来经测试,是无效的。真正的修改 file_get_contents延时可以用resource $context的timeout参数:
$opts = array(
'http'=>array(
'method'=>"GET",
'timeout'=>60,
)
);
//创建数据流上下文
$context = stream_context_create($opts);
$html =file_get_contents('http://blog.sina.com/mirze', false, $context);
//fopen输出文件指针处的所有剩余数据:
//fpassthru($fp); //fclose()前使用
二、一次有延时的话那就多试几次
有时候失败是因为网络等因素造成,没有解决办法,但是可以修改程序,失败时重试几次,仍然失败就放弃,因为file_get_contents()如果失败将返回 FALSE,所以可以下面这样编写代码:
$cnt=0;
while($cnt < 3 && ($str=@file_get_contents('http://blog.sina.com/mirze'))===FALSE) $cnt++;
以上方法对付超时已经OK了。
那么Post呢?细心点有人发现了'method'=>"GET", 对!是不是能设置成post呢?百度找了下相关资料,还真可以!而且有人写出了山寨版的post传值函数,如下:
function Post($url, $post = null){
$context = array();
if (is_array($post)) {
ksort($post);
$context['http'] = array (
'timeout'=>60,
'method' => 'POST',
'content' => http_build_query($post, '', '&'),
);
}
return file_get_contents($url, false, stream_context_create($context));
}
$data = array(
'name' => 'test',
'email' => 'test@gmail.com',
'submit' => 'submit',
);
echo Post('http://www.ej38.com', $data);
OK , 上面函数完美了,既解决了超时控制又解决了Post传值。再配合康盛的改良版RC4加密解密算法,做一个安全性很高的webservice就简单多了。
创建并返回一个文本数据流并应用各种选项,可用于fopen(),file_get_contents()等过程的超时设置、代理服务器、请求方式、头信息设置的特殊过程。
函数原型:resource stream_context_create ([ array $options [, array $params ]] )
在使用file_get_contents函数的时候,经常会出现超时的情况,在这里要通过查看一下错误提示,看看是哪种错误,比较常见的是读取超时,这种情况大家可以通过一些方法来尽量的避免或者解决。这里就简单介绍两种:
一、增加超时的时间限制
这里需要注意:set_time_limit只是设置你的PHP程序的超时时间,而不是file_get_contents函数读取URL的超时时间。一开始以为set_time_limit也能影响到file_get_contents,后来经测试,是无效的。真正的修改 file_get_contents延时可以用resource $context的timeout参数:
$opts = array(
'http'=>array(
'method'=>"GET",
'timeout'=>60,
)
);
//创建数据流上下文
$context = stream_context_create($opts);
$html =file_get_contents('http://blog.sina.com/mirze', false, $context);
//fopen输出文件指针处的所有剩余数据:
//fpassthru($fp); //fclose()前使用
二、一次有延时的话那就多试几次
有时候失败是因为网络等因素造成,没有解决办法,但是可以修改程序,失败时重试几次,仍然失败就放弃,因为file_get_contents()如果失败将返回 FALSE,所以可以下面这样编写代码:
$cnt=0;
while($cnt < 3 && ($str=@file_get_contents('http://blog.sina.com/mirze'))===FALSE) $cnt++;
以上方法对付超时已经OK了。
那么Post呢?细心点有人发现了'method'=>"GET", 对!是不是能设置成post呢?百度找了下相关资料,还真可以!而且有人写出了山寨版的post传值函数,如下:
function Post($url, $post = null){
$context = array();
if (is_array($post)) {
ksort($post);
$context['http'] = array (
'timeout'=>60,
'method' => 'POST',
'content' => http_build_query($post, '', '&'),
);
}
return file_get_contents($url, false, stream_context_create($context));
}
$data = array(
'name' => 'test',
'email' => 'test@gmail.com',
'submit' => 'submit',
);
echo Post('http://www.ej38.com', $data);
OK , 上面函数完美了,既解决了超时控制又解决了Post传值。再配合康盛的改良版RC4加密解密算法,做一个安全性很高的webservice就简单多了。
相关推荐
然后,`stream_context_create()` 使用这些选项创建了一个上下文 `$context`,最后在 `file_get_contents()` 中使用这个上下文进行文件内容获取。 2. **设置超时时间**: ```php $opts = array( 'http' => array...
通过提供给stream_context_create()的选项,开发者可以控制如何发起网络请求、如何处理重定向、如何验证身份等等。例如,设置超时选项可以避免在网络延迟或服务器无响应的情况下,PHP脚本长时间等待;设置代理选项...
本文实例讲述了PHP使用stream_context_create()模拟POST/GET请求的方法。分享给大家供大家参考,具体如下: 有时候,我们需要在服务器端模拟 POST/GET 等请求,也就是在 PHP 程序中去实现模拟,改怎么做到呢?或者说...
知识点三:使用stream_context_create伪造Referer PHP提供了stream_context_create函数,通过它可以创建一个上下文流来修改HTTP请求。stream_context_create可以被用来伪造HTTP_REFERER头部,从而绕过防盗链措施。...
$context = stream_context_create([ 'http' => [ 'method' => 'GET', 'header' => 'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 ...
11. avfilter_graph_create_filter:创建滤波器的上下文。 12. av_opt_set_int_list:给滤波器设置参数。 13. avfilter_graph_parse_ptr:设置滤波器图的描述字符串。 14. avfilter_graph_config:检查FilterGraph的...
$context=stream_context_create([ 'socket'=>[ 'backlog'=>2000 ]]); stream_context_set_option($context,'socket','so_reuseaddr',1); //设置连接重用 //sock_set_option($this->server, SOL_SOCKET, SO_...
5. **stream_context_create()**: 创建一个新的数据流上下文,这个上下文包含了处理数据流时的各种选项和参数,可以用于定制网络请求、文件读写等操作。 6. **stream_context_get_default()**: 获取默认的数据...
$context = stream_context_create($options); $response = file_get_contents($url, false, $context); // 从HTTP响应头部获取Location,即重定向URL $headers = stream_get_meta_data($context)['wrapper_...
$context = stream_context_create(array( 'telnet' => array( 'newline' => PHP_EOL, ), )); $socket = stream_socket_client("tcp://{$host}:{$port}", $errno, $errstr, 30, STREAM_CLIENT_CONNECT, $context)...
$socket = stream_socket_client($proxy, $err, $errMsg, 30, STREAM_CLIENT_CONNECT, stream_context_create()); $head = "GET http://example.com HTTP/1.1\r\n". "Host: example.com\r\n". "User-Agent: ...
TRT_LOGGER、Runtime、Logger、deserialize_cuda_engine、create_execution_context、volume、nptype、get_binding_shape get_binding_dtype:TensorRT中的类和函数,用于构建和执行加速的深度学习推理引擎。 cuda....
TRT_LOGGER、Runtime、Logger、deserialize_cuda_engine、create_execution_context、volume、nptype、get_binding_shape get_binding_dtype:TensorRT中的类和函数,用于构建和执行加速的深度学习推理引擎。 cuda....
$result = file_get_contents($url, false, stream_context_create($options)); $link = json_decode($result, true)["openlink"]; //这个link就是最终生成的链接 $link = '...
$ctx = stream_context_create(); stream_context_set_option($ctx, "ssl", "local_cert", "apns-dev.pem"); $pass = "xxxxxx"; stream_context_set_option($ctx, 'ssl', 'passphrase', $pass); // 根据环境...