Memcached介绍和配置

1、memcached介绍
Memcache是一个高性能的分布式的内存对象缓存系统,通过在内存里维护一个统一的巨大的hash表,它能够用来存
储各种格式的数据,包括图像、视频、文件以及数据库检索的结果等。简单的说就是将数据调用到内存中,然后从
内存中读取,从而大大提高读取速度。(源码:http://code.google.com/p/memcached/downloads/list)

2、memcache应用
使用Memcache的网站一般流量都是比较大的,为了缓解数据库的压力,让Memcache作为一个缓存区域,把部分信息
保存在内存中,在前端能够迅速的进行存取。

3、配置安装
首先下载memcached(windows下的),解压到D盘下mem目录下(可以任意目录下)
然后启动memcache(如果你嫌每次启动麻烦,可以使用memcached.exe -d install ,注意先找到这个文件才能按抓
鬼年,不要双击,得用命令安装服务)
启动服务使用memcached.exe -d status

如果不放心可以在服务里面找下memched服务,然后看看是不是启动了

这样就安装了memcached服务,但是需要php配置php.ini加上extension=php_memcache.dll,然后把
php_memcache.dll拷贝到ext目录下(这里配置完毕需要重启apache服务)

4、测试环境
用下面代码
<?php

$mem=new Memcache;
$mem->connect(“localhost”,11211) or die(“连接失败”);
if($mem){echo “memcached服务启动并连接成功”;}else{echo “连接失败,可能服务没有启动~~”;}
?>
检测是否可以正常连接

ADODB简介以及简单使用

1、adodb数据库类介绍(http://adodb.sourceforge.net/)

虽然 PHP 是建构 Web 系统强有力的工具,但是 PHP 存取数据库的功能,一直未能标准化,每一种数据库,都使用另一种不同且不兼容的应用程序接口(API)。为了填补这个缺憾,因此才有 ADODB 的出现。一旦存取数据库的接口予以标准化,就能隐藏各种数据库的差异,若欲转换至其它不同的数据库,将变得十分容易
使用 ADODB 最大的优点之一是:不管后端数据库如何,存取数据库的方式都是一致的,开发设计人员不必为了某一套数据库,而必须再学习另一套不同的存取方法,这大大减轻开发人员的知识负担,过去的知识往后仍可继续使用,转移数据库平台时,程序代码也不必做太大的更动。

2、简单使用[ADODB是相当强大的,如果您感兴趣,我热烈欢迎你能和我一起交流学习]

我这里直接上代码了:

[php]

数据表:

<form action="" method="post">
username:<input name="username" value="" type="text" />
password:<input name="password" value="" type="text" />
<br />
<input name="sub" value="提交" type="submit" />
</form>
<?php
include("adodb5/adodb.inc.php");
$db=NewADOConnection("mysql");//连接mysql,如果要用access
$db->Connect("localhost","root","joyous","video") or die("连接数据库出错");
//连接数据库参数:服务器,用户,密码,数据库
$db->Execute("set names ‘utf8’");//执行编码
/*$query=$db->Execute("select * from `user`");
while($row=$query->FetchRow())//读取内容
{
print_r($row);
}*/
//自动插入内容
//$arr=array("username"=>"您好");
if(isset($_POST[‘sub’])){
//$arr=array("username"=>"张三","password"=>"123","多余的能插入吗?");
$db->AutoExecute("user",$_POST,"INSERT");
}
?>

[/php]
表结构如下:
Continue reading

php在windows平台执行shell解压文件

今天看到这个php可以执行shell解压文件,顺便整理出来看看吧

先帖代码吧

[php]

<form action="" method="post" enctype="multipart/form-data">
选择文件:<input name="myrar" type="file" /><br />
<input name="sub" value="提交解压文件" type="submit"/>
</form>
<?php
if(isset($_POST[‘sub’]))
{
//print_r($_FILES);exit();
$datetime=date("Ymdhis");
$arr=explode(".",$_FILES["myrar"]["name"]);
$i=count($arr)-1;
$exce=$arr[$i];//获取扩展名
$allowarr=array("rar");//允许上传的扩展名
if(!in_array($exce,$allowarr)){echo "文件类型不允许";exit();}
$newname=$datetime.".".$exce;//重命名文件
$path="rar/" .$newname;
$a=@move_uploaded_file($_FILES[‘myrar’][‘tmp_name’],$path);
//具体参见php手册,这个是移动文件到$path文件夹下
if($a){
//进行解压操作
echo "上传成功,执行解压。。。";
<span style="color: #ff0000;">$obj=new com("wscript.shell");//com组建</span>
$dir=getcwd();//获取当前目录路径
<span style="color: #ff0000;">$shell="winrar x $dir\\"."rar"."\\".$newname." $dir";</span>
<span style="color: #ff0000;">$obj->run($shell,1,true);//执行脚本</span>
echo "解压成功。。。删除原来压缩包。。。";
//unlink($path);//删除上传的压缩包
}
}

?>

[/php]

明天继续整理敬请关注~~

 

Swfupload异步上传汉化以及简单应用

1、swfupload简介具体参见

http://baike.baidu.com/view/1332553.htm

http://code.google.com/p/swfupload/

2、下面通过简单的例子说明仅仅说明使用

先去下载                     附件一:汉化版                      附件二:官方原版

使用说明:

upload.php是操作页面,说明以及内容

//修改文件名
$tem=basename($_FILES[$upload_name][‘name’]);//获取临时文件
$arr=explode(“.”,$tem);//分隔文件获取扩展名,然后用扩展名加上时间重新命名
$i=count($arr)-1;
$file_name=date(“Ymdhis”).”_”.rand(1,100).”.”.$arr[$i];
//Joyous修改到此

这部分是我添加的,本来它不能上传中文格式文件,因此我更改了部分代码。

其中,文件下面我列出了如何操作数据库说明, $save_path = getcwd() . “/file/”;这个是保存文件的位置。如果你有兴趣可以把不同文件类型的分开来存储~~

还是那句话,我是一个快乐的IT小子,纯粹为了学习交流。希望对你能有所帮助而已

 

SQLite简单说明

1、配置需要配置php.ini开启对应的sqlite扩展
extension=php_sqlite.dll
同样sqlite支持pdo,如果需要开启对应的扩展
2、sqlite介绍:http://www.sqlite.org/
sqlite就相当于access数据库是微型数据库~~

3、使用sqlite

[php]

<?php
$db=sqlite_open("my.db");//这里的路径要用/,也就是物理路径
//创建数据库
//$sql="create table test (id <span style="color: #ff0000;">INTEGER</span> primary key,content)";
//注意需要设置id自增设置integer
//$query=sqlite_query($db,$sql);//注意两个参数不可以省略

//插入操作
<span style="color: #ff0000;">$insert="INSERT INTO test ( id , content ) VALUES ( NULL, 123 )";</span>
$res=sqlite_query($db,$insert);
<span style="color: #ff0000;">echo sqlite_last_insert_rowid($db);//获取上个id</span>
//查询操作

$select="SELECT * FROM test order by id desc LIMIT 0 , 20";
$row=sqlite_query($db,$select);
while($info=sqlite_fetch_array($row)){
print_r($info);
}

?>

[/php]

4、sqlitemanager 建立的数据库需要指点路径,而且在这里删除的数据库,不会删除文件
还有就是sqlitemanager数据库名称和数据文件名不一样

更多内容参看

http://www.sqlite.org/

 

Apache重载规则详解[二]

续:http://www.0377joyous.com/archives/606.html

要求2:
很多模板技术mvc中总有index.php(显示在地址栏,看着很不友好,这个怎么重载?)
比如:
http://www.0377joyous.com/index.php/list/23/
重载过后显示
http://www.0377joyous.com/list/23/更利于搜索引擎收录

规则可以这样写(这个是TP上的规则)

RewriteCond %{REQUEST_FILENAME} !-d

RewriteCond %{REQUEST_FILENAME} !-f

RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]

分析下这个例子
简单的说
RewriteCond %{REQUEST_FILENAME} !-d#检查是否是目录

RewriteCond %{REQUEST_FILENAME} !-f#检查是否是文件

Continue reading

Apache重载规则详解[一]

1、先写个简单的重载规则(具体环境配置参考http://www.0377joyous.com/archives/109.html
2、在网站目录(我在网站根目录下做测试)下建立htaccess文件
内容如下:
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule list_([0-9]{1,})\.html$ list.php?cid=$1
</IfModule>
3、在同目录下建立一个list.php文件
内容如下:
<?php
echo “伪静态正常访问:”.$_GET[‘cid’];
?>
4、然后在地址栏输入http://localhost/list_23.html(看能否有如下结果)
伪静态正常访问:23
5、这个显示说明你的伪静态配置也就是重载rewrite模块加载正确
下面开始进行规则学习(其实就是正则表达的学习)

Continue reading

PHP备份数据库原理

主要使用两个函数进行php备份数据库,缺点:不适合备份大型数据库
这里只是讲解下基本原理

备份基本原理过程:连接数据库服务器,查询表,导出表结构
查询数据,存入文件
恢复数据库:连接数据库,导入结构,插入数据

获取表名,使用函数mysql_list_tables
mysql_list_tables() 接受一个数据库名并返回和 mysql_query() 函数很相似的一个结果指针。
用 mysql_tablename() 函数来遍历此结果指针
或者任何使用结果表的函数,例如 mysql_fetch_array()

获取字段相关信息

mysql_fetch_field — 从结果集中取得列信息并作为对象返回
name – 列名
table – 该列所在的表名
max_length – 该列最大长度
not_null – 1,如果该列不能为 NULL
primary_key – 1,如果该列是 primary key
unique_key – 1,如果该列是 unique key
multiple_key – 1,如果该列是 non-unique key
numeric – 1,如果该列是 numeric
blob – 1,如果该列是
type – 该列的类型
unsigned – 1,如果该列是无符号数
zerofill – 1,如果该列是 zero-filled

写入文件和查询保存都不再这里多说了,就使用fopen的fwrite的用法。网上有很多写好的类,可以去下载使用~~

php安装程序制作原理

过程:
1、(之前需要有安装协议)检查环境(操作系统、php版本、数据库、附件上传、目录权限、特殊环境要求(pdo、rewrtie、gd2、短标签等))
2、基础数据输入(数据库服务器、数据库用户名、数据库密码、数据库名、数据库表前缀、初始管理员、初始管理员密码等)
3、检查配置文件是否正确、建立初始数据库、导入初始数据
4、删除或者移动安装文件(检测安装完全)

简单例子:

[php]

<?php
$file="../data/config.php";//配置文件
<span style="color: #ff0000;">if(is_writable($file))</span>
{
echo "配置文件可写入√";
}else{
echo "配置文件不可写入X";

}
if(isset($_POST[‘sub’])){
$str="<?php";
$str.="\n";
$str.="\$mysql_host=’".$_POST[‘host’]."’;";
$str.="\n";
$str.="\$mysql_user=’".$_POST[‘user’]."’;";
$str.="\n";
$str.="\$mysql_pass=’".$_POST[‘pass’]."’;";
$str.="\n";
$str.="\$mysql_db=’".$_POST[‘database’]."’;";
$str.="\n";
$str.="\$mysql_pre=’".$_POST[‘pre’]."’;";
$str.="\n";
$str.="?>";
<span style="color: #ff0000;">$ff=fopen($file,"w+");</span>
fwrite($ff,$str);
}
?>

<form action="" method="post">
主&nbsp;&nbsp;&nbsp;&nbsp;机:<input name="host" type="text" /><br />

用户名:<input name="user" type="text" /><br />

密&nbsp;&nbsp;&nbsp;&nbsp;码:<input name="pass" type="text" /><br />

数据库:<input name="database" type="text" /><br />

表前缀:<input name="pre" type="text" /><br />

<input name="sub" value="提交" type="submit" />
</form>

[/php]