技术的世界只说技术就好了..

分类目录

近期文章

标签

近期评论

功能

2018年十二月
« 11月    
 12
3456789
10111213141516
17181920212223
24252627282930
31  

file_get_contents超时的问题

请有使用file_get_contents的同学在调用前进行设置
ini_set('default_socket_timeout', $seconds);
当PHP读取php.ini配置文件中的所有设置信息的同时,它提供了采用ini_set()函数根据per-scrīpt原则更改这些设置的功能。此函数接收两个参数:需要调整的配置变量名,以及变量的新值。

例如,在某脚本出现时增加最大执行时间(maximum execution time):

<?php

ini_set('max_execution_time', 600)
ini_set('display_errors','1');//php默认是不显示错误的,这样可以把错误设置打开
// more code

?>;

这样的设置将仅仅影响被设置的脚本。一旦脚本执行完毕,该变量将自动恢复到原始值。

<?php
$ctx = stream_context_create(array(
    'http' => array(
        'timeout' => 1
        )
    )
);
file_get_contents("http://example.com/", 0, $ctx);
?>

< ?php
$file_contents = file_get_contents('http://www.ccvita.com/');
echo $file_contents;
?>

换成curl函数的使用示例:

< ?php
$ch = curl_init();
$timeout = 5;
curl_setopt ($ch, CURLOPT_URL, 'http://www.ccvita.com');
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$file_contents = curl_exec($ch);
curl_close($ch);

echo $file_contents;
?>

file_get_contents来post数据:

HTTP POST with file_get_contents  
$post_variables = array('usernamed' => 'rasmus');

$content = http_build_query($post_variables);

$content_length = strlen($content);

$options = array(

    'http'=>array(

        'method'  => 'POST',

        'header'  =>

              "Content-type: application/x-www-form-urlencoded\r\n" .  

              "Content-length: $content_length\r\n",

        'content' => $content
    )

);
$context = stream_context_create($options);

$index = file_get_contents('http://www.example.com/index.php', false, $context);
 

discuz 7.0/7.1/7.2 和 jQuery 冲突兼容问题

刚开始 郁闷了我好长时间..

找了好多地方,网上给出的办法

 

Discuz和jQuery的冲突有两点,在/include/javascript/common.js文件的
57~64之间有如下代码:

Array.prototype.push = function(value) {
this[this.length] = value;
return this.length;
}

function $(id) {
return document.getElementById(id);
}

Discuz为了兼容低版本的IE,重写了Array对象的push方法,但在重写之前没有做任何判断,改为一下形式:

if(typeof Array.prototype.push === 'undefined') {
Array.prototype.push = function(value) {
this[this.length] = value;
return this.length;
}
}

第二点就是Discuz也有$()函数,就只是为了实现getElementById?功能没有人家强大就别学人家用美元符号嘛,占用符号资源。应该学学百度,人家就用一个字符G,多低调不和别人争美元。
关于$()函数的冲突,jQuery中给出了解决方法,jQuery.noConflict(),把美元让给你(看看人家多大肚)。

我们的jQuery代码可以这样写:

var jq = jQuery.noConflict(); //把$让给第一个实现它的库,用jq代替
jq(function()
{
//**********************
}
);

但是 描述不是很清晰...

我自己改了下 ...解决 兼容问题 解决了

<script src="jQuery.js" type="text/javascript"></script>

<script type="text/javascript">
$(function() {
var jq=jQuery.noConflict(true); //将变量$的控制权让渡给其他库。这样可以确保jQuery不会与其他库的$对象发生冲突。
alert(jq("div").html());//正常 //alert($("div").html());//报错
});
</script>
<div> <p>aaaaaaaaaaaaaaaaa</p></div>
 
 
那为什么能 var jq=jQuery.noConflict(true) 这么写呢?
首先我们看jQuery的源代码:
noConflict: function( deep ) {
window.$ = _$;
if ( deep )
window.jQuery = _jQuery;
return jQuery;
}
明显 ,当deep==true的时候,返回jQuery.
所以我们var jq=jQuery.noConflict(true) 这样定义也就可以理解了。
所以cssrain就可以代替jQuery了。从而确保jQuery不会与其他库的$对象发生冲突。

 

© 2018 技术控 All Rights Reserved