当前位置:  编程技术>php
本页文章导读:
    ▪php中session文件过多inode用完,apache无法运行的解决方法      由于php程序中大量用到了session,php的session的采用默认的形式保存到/tmp中,服务器出现莫名的错误,主机bash上(本地上!远程看不到)反复提示类似错误: killed process 21034(apache2) out of memo.........
    ▪php通过文件头检测文件类型的自定义类      检测文件头信息,继而判断文件类型的例子,这个在防范上传不合要求的文件时,很有用的,比通过js判断文件类型的方法,安全多了。 代码如下:   代码示例: <?php /* 通过文件名,获得.........
    ▪php字符串截取substr函数简介      substr函数,用于字符串的截取。 substr(str,start,length); 例如: 代码示例: substr(php is very good language,4,5); 输出为 is ve; 1,当start>str的长度,则返回为();   代码示例: substr(php is very good lan.........

[1]php中session文件过多inode用完,apache无法运行的解决方法
    来源: 互联网  发布时间: 2013-12-24

由于php程序中大量用到了session,php的session的采用默认的形式保存到/tmp中,服务器出现莫名的错误,主机bash上(本地上!远程看不到)反复提示类似错误:
killed process 21034(apache2)
out of memory :kill process 1247 (apache2) score 28840 or a child.

出现该问题时,曾用过简单的方法:、
直接把/tmp下 的文件清空,重启就好了。

没想到,没过多长时间,问题又重复出现了,而且是一直在出现,看来要花点工夫解决下了。

分享一个我的解决方法,供大家参考。

1、使用内存来保存session
修改php.ini的配置文件
 

session.save_handler = files

修改为:
 

代码示例:
session.save_handler = eaccelerator

前提是已经安装了:eaccelerator。

2、使用session的分级目录
修改;session.save_path = "/tmp"

修改为:
 

代码示例:
session.save_path = "2;/tmp/session"
 

使用/tmp/session目录下二级散列目录存储session

php不会自动建立散列目录,需要手动创建相应的目录,并给予权限:
 

/tmp/session/0/0/
/tmp/session/0/1/
/tmp/session/0/3/
tmp/session/0/4/
……………………

3、用自动清理session
/etc/cron.hourly/下新建文件session
如下:
 

代码示例:
find /tmp/session -amin +180 -exec rm -rf {} \;
 

说明:
1小时清理一次,清理大于3个小时的session文件。

我目前采用的第三个方法,效果不错。
第一种大家也可以尝试下,看看效果咱样吧。

哪位朋友,有好的方法,也欢迎分享给,大家共同探讨,呵呵。


    
[2]php通过文件头检测文件类型的自定义类
    来源: 互联网  发布时间: 2013-12-24

检测文件头信息,继而判断文件类型的例子,这个在防范上传不合要求的文件时,很有用的,比通过js判断文件类型的方法,安全多了。

代码如下:
 

代码示例:
<?php
/* 通过文件名,获得文件类型*
* @author chengmo*
* @version 0.1
* $filename="d:/1.png";echo cFileTypeCheck::getFileType($filename); 打印:png
* edit www.
*/
class cFileTypeCheck
{
private static $_TypeList=array();
private static $CheckClass=null;
private function __construct($filename)
{
self::$_TypeList=$this->getTypeList();
}
/**
*处理文件类型映射关系表*
*
* @param string $filename 文件类型
* @return string 文件类型,没有找到返回:other
*/
private function _getFileType($filename)
{
$filetype="other";
if(!file_exists($filename)) throw new Exception("no found file!");
$file = @fopen($filename,"rb");
if(!$file) throw new Exception("file refuse!");
$bin = fread($file, 15); //只读15字节 各个不同文件类型,头信息不一样。
fclose($file);
$typelist=self::$_TypeList;
foreach ($typelist as $v)
{
$blen=strlen(pack("H*",$v[0])); //得到文件头标记字节数
$tbin=substr($bin,0,intval($blen)); ///需要比较文件头长度
if(strtolower()($v[0])==strtolower(array_shift(unpack("H*",$tbin))))
{
return $v[1];
}
}
return $filetype;
}
/**
*得到文件头与文件类型映射表*
*
* @return array array(array(key,value)...)
*/
public function getTypeList()
{
return array(array("FFD8FFE1","jpg"),
array("89504E47","png"),
array("47494638","gif"),
array("49492A00","tif"),
array("424D","bmp"),
array("41433130","dwg"),
array("38425053","psd"),
array("7B5C727466","rtf"),
array("3C3F786D6C","xml"),
array("68746D6C3E","html"),
array("44656C69766572792D646174","eml"),
array("CFAD12FEC5FD746F","dbx"),
array("2142444E","pst"),
array("D0CF11E0","xls/doc"),
array("5374616E64617264204A","mdb"),
array("FF575043","wpd"),
array("252150532D41646F6265","eps/ps"),
array("255044462D312E","pdf"),
array("E3828596","pwl"),
array("504B0304","zip"),
array("52617221","rar"),
array("57415645","wav"),
array("41564920","avi"),
array("2E7261FD","ram"),
array("2E524D46","rm"),
array("000001BA","mpg"),
array("000001B3","mpg"),
array("6D6F6F76","mov"),
array("3026B2758E66CF11","asf"),
array("4D546864","mid"));
}
public static function getFileType($filename)
{
if(!self::$CheckClass) self::$CheckClass=new self($filename);
$class=self::$CheckClass;
return $class->_getFileType($filename);
}
}
?>

    
[3]php字符串截取substr函数简介
    来源: 互联网  发布时间: 2013-12-24

substr函数,用于字符串的截取。
substr(str,start,length);
例如:

代码示例:
substr(php is very good language,4,5);
输出为 is ve;

1,当start>str的长度,则返回为();
 

代码示例:
substr(php is very good language,26,5);
substr(php is very good language,4);
输出为 (空白)
输出为is v (表明start和langth都为4)

2,当start为负值,则从str末尾出开始读起(*这时是从-1开始读,而不是从0开始),
 

代码示例:
substr(php is very good language,-4,5);
 

输出为uage

3,当length为负值时,length代表的是从末尾开始读,截取str的结束位置。
 

代码示例:
substr(php is very good language,4,-5);
 

输出为is very good lan

另外,
explode()()把函数字符串分割为数组;
strrev()把函数字符串
setlocalhost(content location)设置本地环境.content ,指定需要设置的场景信息常量有(
LC_ALL – 所有下属的常量
LC_COLLATE – 排列顺序
LC_CTYPE – 字符分类和转换(例如:将所有的字符转换成小写或大写形式)
LC_MESSAGES – 系统信息格式
LC_MONETARY – 货币 / 通货格式
LC_NUMERIC – 数值格式
LC_TIME – 日期和时间格式
);location,设置国家区域,例如,chs.
strftime()根据区域设置格式化本地时间/日期。

就介绍这些了,希望对大家有所帮助。
学php教程,就来吧。


    
最新技术文章:
▪PHP函数microtime()时间戳的定义与用法
▪PHP单一入口之apache配置内容
▪PHP数组排序方法总结(收藏)
▪php数组排序方法大全(脚本学堂整理奉献)
▪php数组排序的几个函数(附实例)
▪php二维数组排序(实例)
▪php根据键值对二维数组排序的小例子
▪php验证码(附截图)
▪php数组长度的获取方法(三个实例)
▪php获取数组长度的方法举例
▪判断php数组维度(php数组长度)的方法
▪php获取图片的exif信息的示例代码
▪PHP 数组key长度对性能的影响实例分析
▪php函数指定默认值的方法示例
▪php提交表单到当前页面、提交表单后页面重定...
▪php四舍五入的三种实现方法
▪php获得数组长度(元素个数)的方法
▪php日期函数的简单示例代码
▪php数学函数的简单示例代码
▪php字符串函数的简单示例代码
▪php文件下载代码(多浏览器兼容、支持中文文...
▪php实现文件下载、支持中文文件名的示例代码...
▪php文件下载(防止中文文件名乱码)的示例代码
▪解决PHP文件下载时中文文件名乱码的问题
▪php数组去重(一维、二维数组去重)的简单示例
▪php小数点后取两位的三种实现方法
.net/c#/asp.net iis7站长之家
▪PHP导出excel时数字变为科学计数的解决方法
▪PHP数组根据值获取Key的简单示例
▪php数组去重的函数代码示例
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3