硬件:Intel(R) Core(TM)2 Quad CPU Q6600 @ 2.40GHz 4G内存
1、哈希型数据库
2、关系型数据库
表结构
name sex age memo1 memo2 memo3 memo4 memo5 memo6 memo7 memo8 memo9 memo10 memo11 memo12 memo13
对age字段做索引
第一次写:10万条记录 20秒
第二次写:40万条记录 140秒
第二次写:20万条记录 293秒
写数据,当记录数增大的时候,写入的数据变慢
读:1000次 没找到:大概120毫秒 找到一条:大概190毫秒 10万条记录
读:1000次 没找到:大概120毫秒 找到一条:大概190毫秒 50万条记录
读:1000次 没找到:大概120毫秒 找到一条:大概190毫秒 70万条记录
记录数的增加,对查找速度没影响。如果有返回信息则影响速度。返回的信息越多速度越慢。
测试程序:
写:
<?php
set_time_limit(86400);
require_once("inc/comm.inc.php");
function getmicrotime()
{
list($usec, $sec) = explode(" ",microtime());
&nbs ......
公司MM时常给我一些号码,然我查询是哪家的,都是txt文本格式的,还好号码是一行一个,于是用file()函数取个数组,开始的时候我的win7 32位的可以用apache后来装64位win7由于没找到原生的64位apache于是就传到服务器上每次,有上传有该文件很麻烦,于是做成一个页面去让MM自己完成.废话不多说 要在form表单里上传文件就得需要在表单信息里加上enctype信息:enctype="multipart/form-data" 还有file格式的表单元素 在php.ini有几个和上传文件相关的设置觉得有必要讲下 upload_tmp_dir //临时存放上传文件的目录,默认为空 upload_max_filesize //上传文件最大尺寸 默认为2M file_uploads //是否允许上传文件,默认为On max_input_time //一个POST请求的执行的最大时间,单位为秒,默认60 post_max_size //一个POST请求最大的数据量,这个数值必须大于upload_max_filesize 默认为8M 用$_FILES['data']接受文件及信息其中 ['name'] => 文件名,在客户端的文件名 ['type'] => 文件MIME类型。如image/jpeg, text/plain, application/octet-stream等。 ['tmp_name'] => 如果文件小于允许上传文件大小,则该位置表示上传的文件临时存放路径及临时文件名,被放在upload_tmp_dir所指定的位 ......
基本原理是:首先使mcrypt软件能够运行,然后安装php扩展模块,并在php.ini配置。
这里注意的是mcrypt软件依赖libmcrypt和mhash两个库,所以安装配置顺序从右至左
一,下载安装mcrypt
1.先去http://www.sourceforge.net下载Libmcrypt,mhash,mcrypt安装包 ,下面是我找到的链接
Libmcrypt(libmcrypt-2.5.8.tar.gz ):
mcrypt(mcrypt-2.6.8.tar.gz ):
mhash(mhash-0.9.9.9.tar.gz ):
2 .先安装Libmcrypt
#tar -zxvf libmcrypt-2.5.8.tar.gz
#cd libmcrypt-2.5.8
#./configure
#make
#make install 说明:libmcript默认安装在/usr/local
3.安装mhash
#tar -zxvf mhash-0.9.9.9.tar.gz
#cd mhash-0.9.9.9
#./configure
#make
#make install
4.安装mcrypt
#tar -zxvf mcrypt-2.6.8.tar.gz
#cd mcrypt-2.6.8
#LD_LIBRARY_PATH=/usr/local/lib ./configure
#make
#make install
说明:由于在配置Mcrypt ......
之前的程序中,在服务器 error_log 中一直有这么一个错误提示:
[19-Nov-2009 22:44:50] PHP Fatal error: Cannot break/continue 1 level in /home/filename.php on line 160
但程序还是可以继续执行下去。
经查阅资料,有这么一说法:
当不在 LOOP 或 SELECT 逻辑条件中时,请不要用 break/continue 来中断程序的执行。请试着用 return/exit(); 来替换break/continue 语句。 ......
64位动态php扩展库的编译
工作上需要,这个问题折腾了一阵子。不过当编译成功之后,心里还是相当的兴奋,感受到了一种成就感。也是工作中的一种乐趣。
现在将整个过程写下来,以备后续之需。
a.shared object
(1) download and install the apache
从网络中下载apache-2.0.48.tar.gz
存至/home/tmp
cd /home/tmp
tar -xvzf apache-2.0.48.tar.gz /usr/local
cd /usr/local/apache-2.0.48
./configure --prefix=/usr/local/apache --enable-module=so
make
make install
cd /usr/local/apache/conf
vi httpd.conf
ServerName localhost
port 80
DirectoryIndex default.php default.phtml default.php3 default.html default.htm
AddType application/x-httpd-php .php .phtml .php3 .inc
AddType application/x-httpd-php-source .phps
(2)download and install the php
从网络中下载php-4.3.4.tar.gz
存至/home/tmp
cd /home/tmp
tar -xvzf php-4.3.4.tar.gz /usr/local
cd /usr/local/php-4.3.4
./buildconf --force
./configure --with-apache2=/usr/local/apache/bin/apxs
make
make install
cp php.ini-dis ......
今天看到了一笔记上面是这么说的:
2. 不转意SQL输入
我曾经在一篇文章中最简单的防止sql注入的方法(php+mysql中)讨论过这个问题并给出了一个简单的方法 。有人对我说,他们已经在php.ini中将magic_quotes设置为On,所以不必担心这个问题,但是不是所有的输入都是从$_GET, $_POST或 $_COOKIE中的得到的!
如何修复:
和在最简单的防止sql注入的方法(php+mysql中)中一样我还是推荐使用mysql_real_escape_string()函数
正确做法:
<?php
$sql = "UPDATE users SET
name='.mysql_real_escape_string($name).'
WHERE id='.mysql_real_escape_string ($id).'";
mysql_query($sql);
?>
以下是PHP手册中的介绍:
mysql_real_escape_string
(PHP 4 >= 4.3.0)
mysql_real_escape_string -- 转义 SQL 语句中使用的字符串中的特殊字符,并考虑到连接的当前字符集
说明
string mysql_real_escape_string ( string unescaped_string [, resource link_identifier])
本函数将 unescaped_string 中的特殊字符转义,并计及连接的当前字符集,因此可以安全用于 mysql_query()。
注: mysql_real_escape_string() 并不转义 % 和 _。
......