在某些时候,我们需要在MySQL中查询某个字段属性值重复的次数:

 

     select category , count(*) AS count from publication_has_category

     group by category order by count DESC limit 20

    此查询语句返回的是publication_has_category 表中category字段属性值重复次数(count)最多的前5个记录

最简单的是scandir,不过不能读取子目录,具体代码如下

$dir=”./caxa/”;
$file=scandir($dir);
print_r($file);

但是只需要读出文件名,稍微复杂点,网上找到一个能用,原始代码有错误提示,改了一下引用&$data的地方,如下所示:

<?php

function searchDir($path,&$data){

if(is_dir($path)){
$dp=dir($path);
while($file=$dp->read()){
if($file!=’.’&& $file!=’..’){
searchDir($path.’/’.$file,$data);
}
}
$dp->close();
}
if(is_file($path)){
$data[]=$path;
}

}

function getDir($dir){

$data=array();
searchDir($dir,$data);
return   $data;

}
echo ‘<pre>’;
print_r(getDir(‘.’));

登录后1440秒未活动后总是自动退出,一天还要登录多次,终于有时间来解决这个问题了,感觉是session超时,结果在网上search了下,找到解决办法啦,哈哈哈,在此做个笔记:

phpmyadmin在使用过程中经常出现“登陆超时(1440秒未活动),请重新登录”,很烦

解决方法如下:

修改php.ini,找到

session.gc_maxlifetime = 1440

将数值改大就行了,然后使之生效

试验了一下,结果不好使。

最终解决方案:

找到 phpMyAdmin / libraries / config.default.php 文件,打开,修改

$cfg[‘LoginCookieValidity’] = 1440;

将1440修改成更大的值即可。

 

注意:$cfg[‘LoginCookieValidity’]的值不能大于php.ini里的session.gc_maxlifetime 的值,否则phpmyadmin 里会出现“您的 PHP 配置参数 session.gc_maxlifetime (外链,英文) 短于您在 phpMyAdmin 中设置的 Cookies 有效期,因此您的登录会话有效期将会比您在 phpMyAdmin 中设置的时间要更短。”错误。

session_id()

session_id() 存取目前 session 代号。

语法: string session_id(string [id]);

本函数可取得或者重新配置目前存放 Session 的代号。若无参数 id 则表示只有取得目前 Session 的代号,加上参数则表示将 Session 代号设成新指定的 id。输入及返回均为字符串。

输出 session_id()

 

<?php
	session_start(); 
	echo session_id();
	// 输出 dqr58dnuqj2gufvg4o3tmjb9v4
?>

设置 session_id()

<?php
	session_id("NowaMagic");
	session_start(); 
	
	echo session_id();
	// 输出 NowaMagic
?>


Read More →

21、为什么单个item的大小被限制在1M byte之内?

简单的回答:因为内存分配器的算法就是这样的。

详细的回答:

1)Memcached的内存存储引擎,使用slabs来管理内存。内存被分成大小不等的slabs chunks(先分成大小相等的slabs,然后每个slab被分成大小相等chunks,不同slab的chunk大小

是不相等的)。chunk的大小依次从一个最小数开始,按某个因子增长,直到达到最大的可能值。如果最小值为400B,最大值是1MB,因子是1.20,各个slab的chunk的大小依次是:

slab1 – 400B;slab2 – 480B;slab3 – 576B …slab中chunk越大,它和前面的slab之间的间隙就越大。因此,最大值越大,内存利用率越低。Memcached必须为每个slab预先分配内

存,因此如果设置了较小的因子和较大的最大值,会需要为Memcached提供更多的内存。

2)不要尝试向memcached中存取很大的数据,例如把巨大的网页放到mencached中。因为将大数据load和unpack到内存中需要花费很长的时间,从而导致系统的性能反而不好。如果

确实需要存储大于1MB的数据,可以修改slabs.c:POWER_BLOCK的值,然后重新编译memcached;或者使用低效的malloc/free。另外,可以使用数据库、MogileFS等方案代替

Memcached系统。

Read More →