隐藏PHP 的版本号

七月 28th, 2011 没有评论 »

编辑 php.ini,加入:

  1. expose_php = Off

#2002 无法登录 MySQL 服务器

七月 19th, 2011 没有评论 »
今天用phpmyadmin出现了这个问题我的配置为

$cfg['Servers'][$i]['host']=’localhost’;

从网上找了下资料

修改为$cfg['Servers'][$i]['host'] = ’127.0.0.1′;

就OK了

icvon gb2312编码问题

七月 18th, 2011 2 Comments »

iconv(“utf-8″,”gbk”,”啊啊啊—帮不帮”);

用GB2312 如果不是中文  编码会乱

mysql int bigint 范围

六月 22nd, 2011 没有评论 »

php intval的取值范围:与操作系统相关,32位系统上为-2147483648到2147483647,64位系统上为-9223372036854775808到9223372036854775807。
mysql int取值范围:与操作系统无关,为-2147483648到2147483647,无符号为0到4294967295。

bigint

从 -2^63 (-9223372036854775808) 到 2^63-1 (9223372036854775807) 的整型数据(所有数字)。存储大小为 8 个字节。

int

从 -2^31 (-2,147,483,648) 到 2^31 – 1 (2,147,483,647) 的整型数据(所有数字)。存储大小为 4 个字节。int 的 SQL-92 同义字为 integer

smallint

从 -2^15 (-32,768) 到 2^15 – 1 (32,767) 的整型数据。存储大小为 2 个字节。

tinyint

从 0 到 255 的整型数据。存储大小为 1 字节。

MongoDB Redis TTerver 比较

六月 14th, 2011 没有评论 »

MongoDB和Redis写入数据不是直接写入磁盘,所以当重启系统时候没有存盘的数据将全部丢失。TT实际上也有内存缓冲,不过和前者相比要小的多。
以上测试并不完善,只是一个开始,比如没有测试小数据(以数字作为key,100字节Value),没有测试较大的数据(20K左右);没有测试在命中情况下的性能;没有测试并发读写的性能,据闻MongoDB的并发读写效率不是特别出色,MongoDB的特色在于支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,并实现了存储节点的自动sharding管理等配套功能;以及由于MongoDB是分布在多个文件中,当数据量远大内存,分布在足够多的文件的时候的性能;对开启同步日志后的Replication测试….对于TT来说,需要对TT的其它数据引擎进行测试,以及TT的各种数据引擎如何优化?TC/TT在mixi的实际应用当中,存储了2000万条以上的数据,同时支撑了上万个并发连接,是一个久经考验的项目。TC在保证了极高的并发读写性能的同时,具有可靠的数据持久化机制,同时还支持类似关系数据库表结构的hashtable以及简单的条件,分页和排序操作,是一个很棒的NoSQL数据库。TC的主要缺点是在数据量达到上亿级别以后,并发写数据性能会大幅度下降(读不受影响),NoSQL: If Only It Was That Easy提到,他们发现在TC里面插入1.6亿条2-20KB数据的时候,写入性能开始急剧下降。Redis本质上是一个Key-Value类型的内存数据库,很像memcached,整个数据库统统加载在内存当中进行操作,定期通过异步操作把数据库数据flush到硬盘上进行保存。因为是纯内存操作,Redis的性能非常出色,Redis最大的魅力是支持保存List链表和Set集合的数据结构,而且还支持对List进行各种操作,例如从List两端push和pop数据,取 List区间,排序等等,对Set支持各种集合的并集交集操作,此外单个value的最大限制是1GB,不像memcached只能保存1MB的数据,Redis可以用来实现很多有用的功能,比方说用他的List来做FIFO双向链表,实现一个轻量级的高性能消息队列服务,用他的Set可以做高性能的tag系统等等。另外Redis也可以对存入的Key-Value设置expire时间,因此也可以被当作一个功能加强版的memcached来用。

PHP正则表达式除链接

五月 15th, 2011 没有评论 »

[code language="php"]
<?php
$str="aaaaa<a class='class' ID='id' href='http://www.junguo.info' target=_blank>存在</a>";
echo preg_replace("/<a[^>]*href=[^>]*>|</[^a]*a[^>]*>/i","",$str);
?>
[/code]

上面这种方法在实践中不稳定,有些问题,下面的实践中使用

[code language="php"]
$example = preg_replace("/<a([^>]*)>/","",$example);
$example = preg_replace("/</a>/","",$example);
[/code]

这样来设计一个项目(MYSQL性能调优)

五月 12th, 2011 没有评论 »

看到一篇好文,分享一下:

1. 商业需求
说明:
不合理的需求导致资源的投入与产出成反比,开发人员有必要对产品提出的需求进行评估,对不影响大局或者可有可无的功能与产品进行协商,商讨是否可以放弃该功能或者适当修改功能。

 

实例:
产品提出论坛帖子总数实时更新,当前论坛情况是用户量庞大,同时帖子更新频繁。如果要做到实时,必须每次发帖后同时更新统计表数据(假设统计数据全部存储在统计表里面)。如果一秒内帖子产生很多,由于并发问题导致统计数据并不正确,由于如果有锁资源争用,造成性能下降。

 

解决方案:
跟产品讨论数据其实可以不那么实时,没有哪个无聊的人会发完帖子,盯着论坛的帖子数研究总数是否增加,即时不准确也不会影响用户的实际操作。把实时功能去 掉后,可以做一个定时任务(SHELL或者用户触发皆可),系统每5分钟跑一次,更新掉论坛帖子数即可,这样最直接的结果是减少了大量由于更新产生的 query语句。
事实像类似DZ这样的开源项目都是不做实时的,甚至帖子的回复数都不是实时准确的,它是每发表一个回复,插入统计缓存,系统定时批量执行这些要更新的数据。

继续阅读 »

php的扩展方法说明

五月 7th, 2011 没有评论 »

extension意为基于php引擎的扩展

zend_extension意为基于zend引擎的扩展

php是基于zend引擎的。

不同的扩展安装后,在php.ini里是用extension还是zend_extension,是取决于该扩展,有的扩展可能只能用zend_extension,如xdebug,也有的扩展可以用extension或zend_extension,如mmcache。

注:上面的结论不保证准确。zend_extension加载php扩展时需用全路径,而extension加载时可以用相对extension_dir的路径。

确定可以用zend_extension之后,还有下面几种可能:

根据 PHP 版本,zend_extension 指令可以是以下之一:

zend_extension (non ZTS, non debug build)

zend_extension_ts ( ZTS, non debug build)

zend_extension_debug (non ZTS, debug build)

zend_extension_debug_ts ( ZTS, debug build)

ZTS:ZEND Thread Safety

可通过phpinfo()查看ZTS是否启用,从而决定用

zend_extension还是zend_extension_ts,当然试一下怎么生效也可以。

谁在加载php.ini

五月 7th, 2011 没有评论 »

本以为是PHP脚本zend,谁知是APCHE或者是nginx

php 找不到临时文件夹

四月 29th, 2011 没有评论 »

原因是 php.ini   upload_tmp_dir 没有设置临时上传路径

upload_tmp_dir =”../tmp/upload”

相对路径也可以