将winntphp.ini-dist改名为php.ini,并找到;Windows Extensions项将
代码如下 | 复制代码 |
;extension=php_ldap.dll 改成 extension=php_ldap.dll |
如果有其它的可以
代码如下 | 复制代码 |
extension_dir = c:php4 |
然后从php5中 把libeay32.dll和ssleay32.dll文件 复制到
代码如下 | 复制代码 |
C:/Windows/System/System32 |
这样就可以使用了php_ldap了,查看是否安装上php_ldap.dll文件,打开phpinfo().就可以查看是否安装成功!
一般情况下您只需将其放入以下目录后“系统找不到php_ldap.dll”或者“没有php_ldap.dll的问题”就可以得到解决:
当然,如果您的操作系统没有安装到C盘,只需将路径中的C换作安装操作系统的盘符即可。如果是一般的应用程序找不到DLL文件,可能只需要将下载到的DLL文件拷贝到您启动的应用程序所在的目录。
ob_start ob_get_flush 这些函数是缓存技术的一种,是减轻服务器压力的,直到项目开发用到才知道混淆了和缓存的概念,
这些像ob_start ob_get_flush这些函数都是为了在编程中字符串输出到客户端上去为了延长时间而用到的技术,延迟输出(字符串先发送到缓冲区需要时在输出到浏览器),是一种输出技巧。最常见的应用是静态化技术(可以实现静态缓存):
把要输出代码的先保存到缓存区在用ob_get_contents();取得内容写入文件
php ob_start 与 ob_end_flush() 是 php 的缓冲输出函数。
ob_start([string output_callback])- 打开输出缓冲区,所有的输出信息不在直接发送到浏览器,而是保存在输出缓冲区里面,可选得回调函数用于处理输出结果信息。
ob_end_flush - 结束(发送)输出缓冲区的内容,关闭输出缓冲区。
php 输出东西,会保存在一个 php 维护的内存里,称为 buffer 也行,缓存也行,都是一个意思。然后当这个 buffer 满了,php 会自动往 web server 发送这些数据。
也就是说每次 echo,并不一定会输出东西,而是保存在 buffer 里。
ob_start() 的意思,可以理解为(但是实际上和我下面的说法有区别),这个 buffer 由 ob_ 系列函数来来控制,也就是,PHP 不会维护自己的 buffer,不会自动把buffer 的内容自动发送到 web server,直到你 ob_end() 或者类似的 ob 操作。
ob_函数一般用来捕获当前的输出,跟效率是没什么关系的。至于为什么捕获输出,原因很多,例如我捕捉输出,缓存到一个文件里,下次请求就可以直接读这个 cache 文件的内容作为输出了。
代码如下 | 复制代码 |
ob_start(); 2 内容 3 echo ob_get_contents() ; |
例子
代码如下 | 复制代码 |
<?php //打开缓冲区 ob_start(); ?> php页面的全部输出 <?php //取得php页面输出的全部内容 $content = ob_get_contents(); //创建一个文件,并打开,准备写入 $fp = fopen(“1.html”, “w”); //把php页面的内容全部写1.html fwrite($fp, $content); fclose($fp); ?> |
而缓存是一个很大的概念,一般用来解决大型网站高负载问题,像下面雨中漫步讲的 就是一种缓存技术的实现,当然除了内存缓存还有文件、页面缓存,比如想uchome 中系统配置变量,一般不需要改变的设置生成文件是文件缓存,用到这些数据直接通过读取文件读取而不直接从数据库读取,这些都是为了避免再次查询数据减轻访问压力问题而设置的。
网上关于 PHP 缓存类的资料很多,不过这个类应该是我见过功能满足需求,但又无比简洁的一个。废话不多说,直接看代码吧!
使用说明:
1、实例化
代码如下 | 复制代码 |
$cache = new Cache(); |
2、设置缓存时间和缓存目录
$cache = new Cache(60, '/any_other_path/');第一个参数是缓存秒数,第二个参数是缓存路径,根据需要配置。
默认情况下,缓存时间是 3600 秒,缓存目录是 cache/
3、读取缓存
代码如下 | 复制代码 |
$value = $cache->get('data_key');4、写入缓存 $value = $cache->put('data_key', 'data_value');完整实例: $cache = new Cache(); //从缓存从读取键值 $key 的数据 //如果没有缓存数据 <?php //cache constructor, optional expiring time and cache path //returns the filename for the cache //creates new cache files with the given data, $key== name of the cache, data the info/values to store //returns cache for the given key |
发送HTTP请求:
代码如下 | 复制代码 |
$client = new Zend_Http_Client(); $client->setUri($url); $client->setConfig(array('maxredirects' => 1)); $response = $client->request(); if ( $response->isRedirect() ) { echo "设置了转发"; } else { echo "没有设置转发"; } |
在这里如果不设置maxredirects参数,Zend默认的最大跳转数为5。就是在每次请求的时候,如果该地址设置了转发,他会读取转发到的新地址,然后再对这个地址发起请求。循环做这个操作,直至新地址没有设置转发或者循环超过了5次才会返回最后一次的请求数据。
这样的话,如果我只想获取某个域名是否设置了转发,那么就必须设置下maxredirects这个参数了。
•Zend Framework代码:
代码如下 | 复制代码 |
public function request($method = null) if ($method) { // Make sure the adapter is loaded // Send the first request. If redirected, continue. return $response; |
php代码
代码如下 | 复制代码 |
<?php $fruits = array ( |
上面是英文是没有问题,如果是中文就会有问题,解决办法如下
Json 只支持 utf-8 编码,我认为是前端的 Javascript 也是 utf-8 的原因。
代码如下 | 复制代码 |
<?php echo json_encode($array); |
结果
代码如下 | 复制代码 |
{"title":"u8fd9u91ccu662fu4e2du6587u6807u9898","body":"abcd..."} |
利用js来分析这个函数
代码如下 | 复制代码 |
$(function(){ |
注意在你的php输出js格式时我们必须是header('Content-type: text/json');这样的头部信息发送哦。
后面加一个完整的可解析中文乱码的问题程序
代码如下 | 复制代码 |
<?php $array = array
|
代码如下 | 复制代码 |
<?php //两个数组的并集 $arr1 = array('a','b','c','d','e','f'); //$arr2 = array('a','a','e','a','p','a','a','e'); $arr2 = array('a','a','a','a'); $ilength = count($arr1); $jlength = count($arr2); /** * 两个数组的交集 * @param array $arr1 * @param array $arr2 * @autho zhaoya * @return array $arr */ function jiaoji($arr1,$arr2) { $ilength = count($arr1); $jlength = count($arr2); for($i=0;$i<$jlength;$i++) { for($j=0;$j<$ilength;$j++) { if($arr2[$i] == $arr1[$j]) { $arr[] = $arr2[$i]; break; } } } return $arr; } $arr3 = array(1,10,10,5,90,50,90); $arr4 = array(10,23,50,100,110,80); echo '<pre>'; $time1 = microtime(); /*$arr3 = __deleterepeat($arr3); $arr4 = __deleterepeat($arr4); $arr5 = bingji($arr3,$arr4); $arrsort = sort_array($arr5);*/ ///经过实验证明 先并集,然后在去除重复值 ,再排序,这样的速度会快一些 ///而先删除 两个数组的重复值,在并集,在排序的话,这样的速度慢点 $arr5 = bingji($arr3,$arr4); $arr5 = __deleterepeat($arr5); $arrsort = sort_array($arr5); $time2 = microtime(); echo $time1,'<hr>'; echo $time2,'<hr>'; echo $time2-$time1; print_r($arrsort); //去除重复值(第一种方法) //__deleterepeat($arr2); /** * 去除重复值(第一种方法) * @param array $array * @return array $tmparr * @author zhaoya */ function __deleterepeat($array) { $count = count($array); for($i = 0;$i<$count;$i++) { $change = false; for($j=$i+1;$j<$count;$j++) { if($array[$i] == $array[$j]) { $change=true; break; } } if($change==false) { $tmparr[] = $array[$i]; } } return $tmparr; } //去除重复的值 第二种方法 $arrayshift = _delrepeat($arr2); $tmparray=array(); /*** * 去除一维数组重复的值 * @param array $arr * @return array $tmparray; * @author zhaoya */ function _delrepeat($arr) { for($i=0;$i<count($arr);$i++) { if(inarray($arr[$i],$tmp)) { $tmparray[] = $arr[$i]; } } return $tmparray; } /** * 查找变量是否在这个数组里面 * @param integer $num * @param array $arr * @author zhaoya * @return boolean * */ function inarray($num,$arr) { if($arr) { for($i=0;$i<count($arr);$i++) { if($arr[$i] == $num) { return false; } return true; } } return true; } /** * 两个数组的并集 * @param array $arr1 数组1 * @param array $arr2 数组2 * @author zhaoya * @return array $arr1 */ function bingji($arr1,$arr2) { $ilength = count($arr1); $jlength = count($arr2); for($i=0;$i<$jlength;$i++) { $change=false; for($j=0;$j<$ilength;$j++) { if($arr2[$i] == $arr1[$j]) { $change = true; break; } } if($change == false) { $arr1[] = $arr2[$i]; } } return $arr1; } /** * 数组排序 从小到大 * @param array $arr 数组 * @author zhaoya * @return array $arr */ function sort_array($arr) { $length = count($arr); for($i=0;$i<$length;$i++) { for($j=$i+1;$j<$length;$j++) { if($arr[$i] > $arr[$j]) { $tmp = $arr[$i]; $arr[$i] = $arr[$j]; $arr[$j] = $tmp; } } } return $arr; } ?> |