C标准头文件[转]

ISO C标准定义的头文件(24项)

<assert.h>   ——————— 验证程序断言
<complex.h>  ——————— 支持复数算术运算
<ctype.h>    ——————— 字符类型
<errno.h>    ——————— 出错码
<fenv.h>     ——————— 浮点环境
<float.h>    ——————— 浮点常量
<inttypes.h> ——————— 整型格式转换
<iso646.h>   ——————— 替代关系操作符宏
<limits.h>   ——————— 实现常量
<locale.h>   ——————— 局部类别
<math.h>     ——————— 数学常量
<setjmp.h>   ——————— 非局部goto
<signal.h>   ——————— 信号
<stdarg.h>   ——————— 可变参数表
<stdbool.h>  ——————— 布尔类型和值
<stddef.h>   ——————— 标准定义
<stdint.h>   ——————— 整型
<stdio.h>    ——————— 标准I/O库
<stdlib.h>   ——————— 实用程序库函数
<string.h>   ——————— 字符串操作
<tgmath.h>   ——————— 通用类型数学宏
<time.h>     ——————— 时间和日期
<wchar.h>    ——————— 扩展的多字节和宽字符支持
<wctype.h>   ——————— 宽字符分类和映射支持

——————————————————————————————
POSIX标准定义的必须的头文件(26项)

<arpa/inet.h>   ——————— Internet定义
<dirent.h>      ——————— 目录项
<fcntl.h>       ——————— 文件控制
<fnmatch.h>     ——————— 文件名匹配类型
<glob.h>        ——————— 路径名模式匹配类型
<grp.h>         ——————— 组文件
<netdb.h>       ——————— 网络数据库操作
<net/if..h>     ——————— 套接字本地接口
<netinet/in.h>  ——————— Internet地址族
<netinet/tcp.h> ——————— 传输控制协议定义
<pwd.h>         ——————— 口令文件
<regex.h>       ——————— 正则表达式
<sys/mman.h>    ——————— 内存管理声明
<sys/select.h>  ——————— select函数
<sys/socket.h>  ——————— 套接字接口
<sys/stat.h>    ——————— 文件状态
<sys/times.h>   ——————— 进程时间
<sys/types.h>   ——————— 基本系统数据类型
<sys/un.h>      ——————— UNIX域套接字定义
<sys/utsname.h> ——————— 系统名
<sys/wait.h>    ——————— 进程控制
<tar.h>         ——————— tar归档值
<termios.h>     ——————— 终端I/O
<unistd.h>      ——————— 符号常量
<utime.h>       ——————— 文件时间
<wordexp.h>     ——————— 字扩展类型

——————————————————————————————
POSIX标准定义的XSI扩展头文件(26项)

<cpio.h>        ——————— cpio归档值
<dlfcn.h>       ——————— 动态链接
<fmtmsg.h>      ——————— 消息显示结构
<ftw.h>         ——————— 文件树漫游
<iconv.h>       ——————— 代码集转换实用程序
<langinfo.h>    ——————— 语言信息常量
<libgen.h>      ——————— 模式匹配函数定义
<monetary.h>    ——————— 货币类型
<ndbm.h>        ——————— 数据库操作
<nl_types.h>    ——————— 消息类别
<poll.h>        ——————— 轮询函数
<search.h>      ——————— 搜索表
<strings.h>     ——————— 字符串操作
<sys/ipc.h>     ——————— IPC
<syslog.h>      ——————— 系统出错日志记录
<sys/msg.h>     ——————— 消息队列
<sys/resource.h>——————— 资源操作
<sys/sem.h>     ——————— 信号量
<sys/shm.h>     ——————— 共享存储
<sys/statvfs.h> ——————— 文件系统信息
<sys/timeb.h>   ——————— 附加的日期和时间定义
<sys/time.h>    ——————— 时间类型
<sys/uio.h>     ——————— 矢量I/O操作
<ucontext.h>    ——————— 用户上下文
<ulimit.h>      ——————— 用户限制
<utmpx.h>       ——————— 用户帐户数据库

——————————————————————————————
POSIX标准定义的可选头文件(8项)

<aio.h>         ——————— 异步I/O
<mqueue.h>      ——————— 消息队列
<pthread.h>     ——————— 线程
<sched.h>       ——————— 执行调度
<semaphore.h>   ——————— 信号量
<spawn.h>       ——————— 实时spawn接口
<stropts.h>     ——————— XSI STREAMS接口
<trace.h>       ——————— 时间跟踪

WordPressMU 多库实现

对于Blog服务商或者个人搭建的为了多个人使用的版本WordPressMU,在用户数量日渐增长后,会导致一个数据库之内存有大量用户表,不便于管理和维护,在这个时候就需要使用到数据库散列,将用户表散列保存在多个数据库中,甚至于多个服务器中。眼下最容易找到的插件就是SharDB,在WordPress网站上就有下载。下载地址在此:http://wordpress.org/extend/plugins/shardb/,对于它的使用,很少找到中文的使用介绍一类的,经过一些研究总结了些经验,写出来给大家分享下。目前测试过WordPressMU2.9.2的版本,早期的版本也可以使用,对于最新的3.0没有做过测试,待测试后再将结果发上来。

SharDB是将用户的表Hash散列到多个数据库中,这样基本保证每个库中的用户表数量基本一致,首先要确定要是用多少个数据库,用户的数量是在增长的,但是数据库的总量是不变的,根据估算的支持规模可以决定使用多少个库,SharDB支持16库、256库、4096库,万级以下的规模使用16库基本可以了,如果对于增长量的估计比较乐观的话,也可以考虑256库,对于大型应用就可以使用4096库了。对于建立的多库,使用统一的前缀名是一定的。

可以使用以下PHP代码建立多库


//下面这行根据自己的服务器配置设置

//mysql_connect(DB_HOST,DB_USER,DB_PWD) or die("DB connect ERROR!);

$shardb_prefix = "db_blog_";//数据库前缀

$shardb_hash_length = "";//散列16进制长度(如果建立16库就是1,256库就是2,4096库就是3)

$fmt = "{$shardb_prefix}%0{$shardb_hash_length}x";

$shardb_num_db = 1 << ($shardb_hash_length*4);

for($d=0;$d<$shardb_num_db;$d++){

    $dbname = sprintf($fmt,$d);

    $sql = "create database $dbname";

    mysql_query($sql);

}

建立好多库后先配置db-settings.php文件

将//$shardb_hash_length = 2;这一行的注释去掉,数值根据要建立库的数量设定

//$shardb_prefix = ‘acct_wpmu’;的注释去掉,acct_wpmu替换成自己的数据库前缀

//$shardb_dataset = ‘abc’;注释去掉,abc设定为自己的dataset值

如果想将主blog放入主库中则去掉$enable_home_db = true;这一行的注释。

对于VIP库和主从库的设置暂时不涉及。

这一行的注释去掉add_db_server(‘global’, 0,    ”, 1, 1,    DB_HOST, DB_HOST, DB_NAME, DB_USER, DB_PASSWORD);

保存后上传至WordPress所在目录

然后修改wp-config.php文件,在define(‘DB_CHARSET’, ‘utf8′);这一行后添加

require(‘db-settings.php’);
define(‘WPMU’, true);

将db.php上传至wp-content目录下,shardb-admin.php上传至mu-plugins目录下,多库搭建就完成了,所有新建blog都会散列到建立的多个数据库中。

在WordPress中应用GoogleAnalytics

代码很简单,个人站点只需要建立一个文本文件,输入以下内容:


<?php

function add_googleanalytics_foot()
{
 $str = '
var gaJsHost = (("https:" == document.location.protocol) ? "<a href="https://ssl">https://ssl</a>." : "<a href="http://www">http://www</a>.");
document.write(unescape("%3Cscript src=\'" + gaJsHost + "google-analytics.com/ga.js\' type=\'text/javascript\'%3E%3C/script%3E"));

try{
var pageTracker = _gat._getTracker("googleKEY");
pageTracker._trackPageview();
} catch(err) {}
';
  print $str;
}

add_action('wp_footer', 'add_googleanalytics_foot');

?>

以上代码中的“googleKEY”替换为自己的Google Analytics帐号,就是那个UA-xxxxxxxx-x那一段

或者将$str=’到’;之间替换成Google提供的完整代码

保存的时候注意编码格式,一般都是UTF8编码,保存后将该文件重命名为.php文件,然后在WordPress后台上传插件并在插件管理中启用即可。

Android开发环境搭建

把一篇旧文转过来

学习开发之前就要先准备好各种工具,Eclipse,AndroidSDK,JDK一个都不能少。JDK1.5,Eclipse3.3.2,android-sdk-windows-1.0_r1。

解压了Eclipse和AndroidSDK,按照SDK说明文档上的要求:On Windows, right click on My Computer, and select Properties. Under the Advanced tab, hit the Environment Variables button, and in the dialog that comes up, double-click on Path under System Variables. Add the full path to the tools/ directory to the path.在系统的环境变量中加入了AndroidSDK下的tools目录的路径,以便以后使用tools目录下的程序不用输入全路径。

接下来安装Android的Eclipse插件,在Eclipse的菜单中选择Help > Software Updates > Find and Install,在弹出的窗口中选择Search for new features to install,下一步;选择New Remote Site,在弹出的窗口的URL框中输入https://dl-ssl.google.com/android/eclipse/(如果使用的是Eclipse 3.4 (Ganymede)则此步骤不同,参考SDK相关内容操作),确定后在Sites to includ in search中就会出现刚刚输入的连接名称,这时候选中刚输入的连接和Europa Discovery Site两项,然后点Finish(这里有个Automatically select mirrors项,尽量不要选择吧,选择了就会自动连接上海服务器,我连接上海服务器更新失败,后来选择了个美国的服务器才更新好);在接下来的Updates窗体中选中之前加入的连接,Europa Discovery Site项不选但是展开,这时候点右侧的Select Required,Eclipse会自动选择Android所需的项,如果不进行这一步就会在Android Editors项的图表上出现个红叉无法安装,并且提示:requires plug-in org.eclipse.wst.sse.ui。当Eclipse选择好所需项后点击Next,在License窗体中选择I accept……项然后点Next进行下载安装,安装结束后重新启动Eclipse。

 在Eclipse菜单中选择Window > Preferences ,选中Android项,设置好AndroidSDK的路径,Android的开发环境就算是配置完了。

PHP常用正则(zz)

$str=preg_replace("/\s+/", " ", $str); //过滤多余回车
$str=preg_replace("/<[ ]+/si","<",$str); //过滤<__("<"号后面带空格)

$str=preg_replace("/<\!--.*?-->/si","",$str); //注释
$str=preg_replace("/<(\!.*?)>/si","",$str); //过滤DOCTYPE
$str=preg_replace("/<(\/?html.*?)>/si","",$str); //过滤html标签
$str=preg_replace("/<(\/?head.*?)>/si","",$str); //过滤head标签
$str=preg_replace("/<(\/?meta.*?)>/si","",$str); //过滤meta标签
$str=preg_replace("/<(\/?body.*?)>/si","",$str); //过滤body标签
$str=preg_replace("/<(\/?link.*?)>/si","",$str); //过滤link标签
$str=preg_replace("/<(\/?form.*?)>/si","",$str); //过滤form标签
$str=preg_replace("/cookie/si","COOKIE",$str); //过滤COOKIE标签

$str=preg_replace("/<(applet.*?)>(.*?)<(\/applet.*?)>/si","",$str); //过滤applet标签
$str=preg_replace("/<(\/?applet.*?)>/si","",$str); //过滤applet标签

$str=preg_replace("/<(style.*?)>(.*?)<(\/style.*?)>/si","",$str); //过滤style标签
$str=preg_replace("/<(\/?style.*?)>/si","",$str); //过滤style标签

$str=preg_replace("/<(title.*?)>(.*?)<(\/title.*?)>/si","",$str); //过滤title标签
$str=preg_replace("/<(\/?title.*?)>/si","",$str); //过滤title标签

$str=preg_replace("/<(object.*?)>(.*?)<(\/object.*?)>/si","",$str); //过滤object标签
$str=preg_replace("/<(\/?objec.*?)>/si","",$str); //过滤object标签

$str=preg_replace("/<(noframes.*?)>(.*?)<(\/noframes.*?)>/si","",$str); //过滤noframes标签
$str=preg_replace("/<(\/?noframes.*?)>/si","",$str); //过滤noframes标签

$str=preg_replace("/<(i?frame.*?)>(.*?)<(\/i?frame.*?)>/si","",$str); //过滤frame标签
$str=preg_replace("/<(\/?i?frame.*?)>/si","",$str); //过滤frame标签

$str=preg_replace("/<(script.*?)>(.*?)<(\/script.*?)>/si","",$str); //过滤script标签
$str=preg_replace("/<(\/?script.*?)>/si","",$str); //过滤script标签
$str=preg_replace("/javascript/si","Javascript",$str); //过滤script标签
$str=preg_replace("/vbscript/si","Vbscript",$str); //过滤script标签
$str=preg_replace("/on([a-z]+)\s*=/si","On\\1=",$str); //过滤script标签
$str=preg_replace("/&#/si","&#",$str); //过滤script标签,如javAsCript:alert('aabb)

使用自由加密软件PHP screw对PHP源码加密[转]

本文为寻找人生的起点(http://blog.cn-ic.org)原创,如需转载,请注明出处,并保留原文链接。

我学PHP比较晚,完全没有接触过PHP3。等我意识到需要为php源码加密的时候,满世界的信息告诉我PHP的Zend已经可以完美反编译了。另外就是Zend是需要收费的商业软件(虽然也有30天的试用版本)和增对Zend加密指导文档的匮乏。

于是我选择了PHP screw 这款轻量级的加密软件。

采用BSD License

支持所有POSIX系统(Unix/Linux/Linux Like),不支持Windows.

最新版本是php_screw_1.5,更新时间2007-10-16.

官方站点位于sourceforge:http://sourceforge.net/projects/php-screw/

官方站点只能下到源码

1.从官方站点下载最新版本:

http://sourceforge.net/project/showfiles.php?group_id=52025

以下按我下载的php_screw_1.5为例: php_screw_1.5.tar.gz

2.解压缩:tar zxvf php_screw_1.5.tar.gz

3.通过README.en文件可以看到该版本软件包要求PHP5.x 环境,并要求zlib支持(通过执行脚本<? gzopen(); ?>来检查)。如果你使用的是PHP4.X版本,请下载php_screw_1.3版本

4.进入源码目录

#cd php_screw_1.5

先执行

#phpize

如果提示上述命令不存在,可能是由于你的php没有安装在标准目录下,请到php安装目录的bin文件夹下寻找,确定是否有该文件。然后回到php_scre_1.5目录下,执行

#/full/path/to/phpize

要成功执行phpize,需要有autoconf 和M4软件包。成功执行后,源码文件夹下出现configure文件

执行:

./configure

如果php安装在非标准目录,需要查看在phpize目录下是否有php-config文件,然后执行该目录如下

./configure –with-php-config=/full/path/to/php-config

5.自定义加密种子文件,这个可能是该程序的亮点

用你喜欢的文本编辑器打开源码目录下的my_screw.h,修改文件里面的数组文件,可以用数字添加该数组的长度。数组越长,加密越可靠。而且该数组的长度不会影响加密以及你的PHP程序执行的速度.

修改完my_screw.h文件以后执行

#make

6.正常执行完make后,你可以在源码目录的modules文件夹下找到php_screw.so文件。将该文件copy到phpinfo()里面extension_dir所指的目录下,然后在php.ini文件里面添加

extension=php_screw.so

重启apache,查看phpinfo()里面应该有php_screw的相关信息

7.转到源码目录下的tools文件夹,执行

#make

这里是编译php源码到php加密文件工具:screw

上面的php_screw.so其实是解析加密后的php源码

编译screw过程中会用到my_screw.h文件,所以请保证编译php_screw.so和screw时使用的my_screw.h文件一致。

make完成后会在tools目录下产生screw可执行文件,你可以把它放到任何你喜欢的path目录,如/usr/local/bin,/usr/bin等,确保你键入screw命令时可以找到

8.切换到你的php源码目录,比如你要加密phpinfo.php文件则执行

#screw phpinfo.php

则产生phpinfo.php这个加密文件,原文件copy为phpinfo.php.screw.打开phoinfo.php文件可以看到一堆乱码。通过web访问phpinfo.php以及phpinfo.php.screw则显示同样内容

9. php_screw_1.5有一个缺点就是screw 加密工具一次只能执行一个文件,如果你切换到你的php源码目录执行

#screw *

不会有任何文件被加密,如果要加密上百个文件,那正是灾难

解决办法如下 ,执行

#find /path/to/php/source -name “*.php” -print | xargs -n1 screw

可以对/path/to/php/source目录下的所有后缀为php的文件加密,包括子目录下的。

这样就基本做到的对php源码的加密。如果只是个人的小程序源码的加密,我想php_screw是一个不错的选择

给Nginx环境下安装Zend组件[转]

Nginx环境下安装Zend组件,以下为安装步骤:

第一步:SSH登陆后进入一个目录:cd /usr/local/src

第二步:执行

wget http://apbeta.com/wp-content/uploads/2010/01/ZendOptimizer.tar.gz

ZendOptimizer.tar

第三步:

tar zxvf ZendOptimizer.tar.gz
mv zend /usr/local/zend
第四步:
执行:
vi /usr/local/php/etc/php.ini
在最后面加入
[Zend]
zend_extension_manager.optimizer=/usr/local/zend/lib/Optimizer-3.3.3
zend_extension_manager.optimizer_ts=/usr/local/zend/lib/Optimizer_TS-3.3.3
zend_optimizer.version=3.3.3
zend_extension=/usr/local/zend/lib/ZendExtensionManager.so
zend_extension_ts=/usr/local/zend/lib/ZendExtensionManager_TS.so

或者执行下面的

cat &gt;&gt;/usr/local/php/etc/php.ini&lt; [Zend]
zend_extension_manager.optimizer=/usr/local/zend/lib/Optimizer-3.3.3
zend_extension_manager.optimizer_ts=/usr/local/zend/lib/Optimizer_TS-3.3.3
zend_optimizer.version=3.3.3
zend_extension=/usr/local/zend/lib/ZendExtensionManager.so
zend_extension_ts=/usr/local/zend/lib/ZendExtensionManager_TS.so
eof

然后保存,nginx执行:

kill -HUP `cat /usr/local/nginx/logs/nginx.pid` 重启 nginx

然后执行:

/usr/local/php/sbin/php-fpm restart

应该生效了!

【Zend Optimizer简介】
  Zend Optimizer(以下简称ZO)用优化代码的方法来提高php应用程序的执行速度。实现的原理是对那些在被最终执行之前由运行编译器(Run-Time Compiler)产生的代码进行优化。 优化能提高你的盈利能力
  一般情况下,执行使用ZO的php程序比不使用的要快40%到100%。这意味着网站的访问者可以更快的浏览网页,从而完成更多的事务,创造更好的客户满意度。更快的反应同时也意味着可以节省硬件投资,并增强网站所提供的服务。所以,使用ZO,就等于提高了电子商务的盈利能力。
  ZO能给php用户带来很多益处,特别是那些运营网站的人。快速运行php程序可以显著降低服务器的CpU负载,并可以减少一半的反应时间,也就是从访问者点击链接到服务器开始读取页面之间的时间。
  为什么要用ZO,难道PHP4还不够快吗?
  的确,用于PHP4的标准运行编译器已经够快了–相同情况下比PHP3要快2-10倍。但使用了ZO的PHP程序的执行速度还会加快40%到100%。
  ZO在PHP4软件安装的什么位置?
  ZO位于PHP4的ZEND引擎中,介于运行编译器和最终执行器之间。
  ZO的最终发布版本要付费吗?
  不要。ZO的最终版本将继续作为免费软件来发布。ZEND技术公司不打算对任何ZO版本收费。
  怎样获得及安装 Zend Optimizer
  请访问 http://www.zend.com/store/products/zend-optimizer.php 下载 Zend Optimizer 的最新版本。
  UNIX
  编译PHP,不要加调试选项-否则ZO不会工作:在配置是加上–disable-debug选项
  复制ZendOptimizer.so文件到你的机器,通常放在:/usr/local/Zend/lib下
  在php.ini文件中加入如下两行,不要包含任何空格:
  zend_optimizer.optimization_level=7
  zend_extension=”/usr/local/Zend/lib/ZendOptimizer.so”
  重新启动Apache服务器
  WINDOWS
  1、运行安装文件,首先提示你选择安装目录,选择一个你喜欢的目录,单击“Next”。
  2、安装向导会要求你选择当前使用的WEB服务器(Apache、IIS或其它),选择好服务器后单击“Next”
  3、安装向导提示您确认php.ini的位置(默认是C:\WINDOWS\)单击“Next”,提示“备份php.ini到C:\WINDOWS\php.ini-Optimizer-bak,当卸载该软件时可以恢复到原始的php.ini)单击“Next”。
  4、安装向导提示“为了继续安装程序需要重新启动IIS服务)单击“是”,安装程序开始重新启动IIS服务,然后安装程序会提示“IIS服务顺利重新启动了”单击“确定”,再单击“finish”完成安装。
  5、安装完毕后程序会自动根据你的选择来修改php.ini帮助你启动这个引擎。下面我们来介绍Zend Optimizer的配置选项,帮助你最大化自定义合理的配置。
  [Zend]
  zend_optimizer.optimization_level=15
  zend_extension_ts=”C:\Program Files\Zend\lib\ZendExtensionManager.dll”
  zend_extension_manager.optimizer_ts=”C:\Program Files\Zend\lib\Optimizer-2.5.5″
  ※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※
  [Zend]
  zend_optimizer.optimization_level=1023
  zend_optimizer.encoder_loader=0
  zend_extension_ts=”C:\Program Files\Zend\lib\ZendOptimizer.dll”
  (网上资料中所看到的内容,也许是版本不同造成的内容有差异)
  ※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※
  现在我们来介绍上边这些配置文件中相关内容的含义:
  zend_optimizer.optimization_level 《== 优化程度,这里定义启动多少个优化过程。
  zend_optimizer.encoder_loader 《== 是否允许处理由Zend Encoder加密的PHP文件。
  zend_extension_ts 《== 优化器所在目录。
  zend_extension_manager.optimizer_ts 《== 优化器管理所在目录。
  优化过程 zend_optimizer.optimization_level 详细解释
  这里最为重点的部分,仔细看!Zend Opt总共有10个优化过程,从理论上说开的越多性能越好。当然,理论和实际永远都存在着差距。优化过程开启的越多对性能消耗也相对也越大,Zend Opt的10个优化过程并不相同也就是说效果不是平均的。Zend公司定义的最高值(High模式)为15,这里15指的是开启1-4号优化过程。当然,很多朋友并不满足于此,毕竟最高也只开启4个优化过程连总数的一半都没有。各个优化过程的对应的数字代码(值)如下:
  不使用 0 &lt;= 如果这样不如不装,还能节约点内存说!
  优化过程1(PASS1) 1
  优化过程2(PASS2) 2
  优化过程3(PASS3) 4
  优化过程4(PASS4) 8
  优化过程5(PASS5) 16
  优化过程6(PASS6) 32
  优化过程7(PASS7) 64
  优化过程8(PASS8) 128
  优化过程9(PASS9) 256
  优化过程10(PASS10) 512
  以何种方式开启优化过程是通过这些数字代码(值)相加所得的和作为此参数的参数值来控制的。如我的配置文件中zend_optimizer.optimization_level = 1023 , 这里的1023是优化过程1到优化过程10全部数字代码(值)相加得到的和,表示开启全部10个优化过程。刚才所提到的Zend公司定义的High模式值为15,15表示同时开启优化过程1-4。
  加密代码支持 zend_optimizer.encoder_loader 详细解释
  对于这个参数,我想如果没有看过Zend Opt FAQ文档的朋友大多数并不知道。这个参数用来告诉Zend Opt是否去支持被Zend Encoder加密过的代码。默认情况下Zend Opt将支持加密过的代码。如果不使用被加密过的代码我推荐你关闭此选项。这个功能牵扯到解包反码的过程,会导致系统负荷的加重。我的朋友已经开发完毕相应的反编译工具,预计春节之后推出。
  这个参数的值只有两个 0 关闭, 1 开启。默认为1,推荐设置为0。
  模块定位 zend_extension_ts 、zend_extension_manager.optimizer_ts无需解释,这些参数就是Zend Optimizer相关模块在硬盘上的安装路径。
  如何获知Zend Optimizer是否在运行?
  答案很简单,只要用PHP的函数phpinfo()来检测便知,如下所示:
  <!–  phpinfo();   –>
  显示的结果中关于Zend Optimizer的部分就象下面这样:
  This program makes use of the Zend Scripting Language Engine:
  Zend Engine v2.2.0, Copyright (c) 1998-2009 Zend Technologies
  with Zend Extension Manager v1.2.0, Copyright (c) 2003-2007, by Zend Technologies
  with Zend Optimizer v3.3.0, Copyright (c) 1998-2007, by Zend Technologies
  表示 Zend Optimizer for PHP优化成功了。
【来源】http://apbeta.com/archives/11056.htm

ulimit命令详解(转)

1,说明:
ulimit用于shell启动进程所占用的资源.
2,类别:
shell内建命令
3,语法格式:
ulimit [-acdfHlmnpsStvw] [size]
4,参数介绍:
-H 设置硬件资源限制.
-S 设置软件资源限制.
-a 显示当前所有的资源限制.
-c size:设置core文件的最大值.单位:blocks
-d size:设置数据段的最大值.单位:kbytes
-f size:设置创建文件的最大值.单位:blocks
-l size:设置在内存中锁定进程的最大值.单位:kbytes
-m size:设置可以使用的常驻内存的最大值.单位:kbytes
-n size:设置内核可以同时打开的文件描述符的最大值.单位:n
-p size:设置管道缓冲区的最大值.单位:kbytes
-s size:设置堆栈的最大值.单位:kbytes
-t size:设置CPU使用时间的最大上限.单位:seconds
-v size:设置虚拟内存的最大值.单位:kbytes 5,简单实例:
5.举例
在Linux下写程序的时候,如果程序比较大,经常会遇到“段错误”(segmentation fault)这样的问题,这主要就是由于Linux系统初始的堆栈大小(stack size)太小的缘故,一般为10M。我一般把stack size设置成256M,这样就没有段错误了!命令为:
ulimit   -s 262140
如果要系统自动记住这个配置,就编辑/etc/profile文件,在 “ulimit -S -c 0 > /dev/null 2>&1”行下,添加“ulimit   -s 262140”,保存重启系统就可以了!
1]在RH8的环境文件/etc/profile中,我们可以看到系统是如何配置ulimit的:
#grep ulimit /etc/profile
ulimit -S -c 0 > /dev/null 2>&1
这条语句设置了对软件资源和对core文件大小的设置
2]如果我们想要对由shell创建的文件大小作些限制,如:
#ll h
-rw-r–r– 1 lee lee 150062 7月 22 02:39 h
#ulimit -f 100 #设置创建文件的最大块(一块=512字节)
#cat h>newh
File size limit exceeded
#ll newh
-rw-r–r– 1 lee lee 51200 11月 8 11:47 newh
文件h的大小是150062字节,而我们设定的创建文件的大小是512字节x100块=51200字节
当然系统就会根据你的设置生成了51200字节的newh文件.
3]可以像实例1]一样,把你要设置的ulimit放在/etc/profile这个环境文件中.
用途
设置或报告用户资源极限。
语法
ulimit [ -H ] [ -S ] [ -a ] [ -c ] [ -d ] [ -f ] [ -m ] [ -n ] [ -s ] [ -t ] [ Limit ]
描述
ulimit 命令设置或报告用户进程资源极限,如 /etc/security/limits 文件所定义。文件包含以下缺省值极限:
fsize = 2097151
core = 2097151
cpu = -1
data = 262144
rss = 65536
stack = 65536
nofiles = 2000
当新用户添加到系统中时,这些值被作为缺省值使用。当向系统中添加用户时,以上值通过 mkuser 命令设置,或通过 chuser 命令更改。
极限分为软性或硬性。通过 ulimit 命令,用户可将软极限更改到硬极限的最大设置值。要更改资源硬极限,必须拥有 root 用户权限。
很多系统不包括以上一种或数种极限。 特定资源的极限在指定 Limit 参数时设定。Limit 参数的值可以是每个资源中指定单元中的数字,或者为值 unlimited。要将特定的 ulimit 设置为 unlimited,可使用词 unlimited。
    注:在 /etc/security/limits 文件中设置缺省极限就是设置了系统宽度极限, 而不仅仅是创建用户时用户所需的极限。
省略 Limit 参数时,将会打印出当前资源极限。除非用户指定 -H 标志,否则打印出软极限。当用户指定一个以上资源时,极限名称和单元在值之前打印。如果未给予选项,则假定带有了 -f 标志。
由于 ulimit 命令影响当前 shell 环境,所以它将作为 shell 常规内置命令提供。如果在独立的命令执行环境中调用该命令,则不影响调用者环境的文件大小极限。以下示例中正是这种情况:
nohup ulimit -f 10000
env ulimit 10000
一旦通过进程减少了硬极限,若无 root 特权则无法增加,即使返回到原值也不可能。
关于用户和系统资源极限的更多信息,请参见 AIX 5L Version 5.3 Technical Reference: Base Operating System and Extensions Volume 1 中的 getrlimit、setrlimit 或 vlimit 子例程。
标志
-a     列出所有当前资源极限。
-c     以 512 字节块为单位,指定核心转储的大小。
-d     以 K 字节为单位指定数据区域的大小。
-f     使用 Limit 参数时设定文件大小极限(以块计),或者在未指定参数时报告文件大小极限。缺省值为 -f 标志。
-H     指定设置某个给定资源的硬极限。如果用户拥有 root 用户权限,可以增大硬极限。任何用户均可减少硬极限。
-m     以 K 字节为单位指定物理存储器的大小。
-n     指定一个进程可以拥有的文件描述符的数量的极限。
-s     以 K 字节为单位指定堆栈的大小。
-S     指定为给定的资源设置软极限。软极限可增大到硬极限的值。如果 -H 和 -S 标志均未指定,极限适用于以上二者。
-t     指定每个进程所使用的秒数。
退出状态
返回以下退出值:
0     成功完成。
>0     拒绝对更高的极限的请求,或发生错误。
示例
要将文件大小极限设置为 51,200 字节,输入:
ulimit -f 100

MySql编译安装

./configure –prefix=/usr/local/mysql/

–enable-assembler                 允许使用汇编模式(优化性能)

–with-extra-charsets=complex              字符集选择

–enable-thread-safe-client                  以线程方式编译客户端

–with-big-tables

–with-readline

–with-ssl

–with-embedded-server

–enable-local-infile

-with-unix-socket-path=/tmp/mysql.sock           使用unix套接字链接提高7.5%性能

-with-client-ldflags=-all-static                以纯静态方式编译客户端

-with-mysqld-ldflags=-all-static            以纯静态方式编译服务端

./configure –prefix=/usr/local/mysql/ –enable-assembler –with-extra-charsets=complex –enable-thread-safe-client –with-big-tables –with-readline –with-ssl –with-embedded-server –enable-local-infile –with-unix-socket-path=/tmp/mysql.sock –with-client-ldflags=-all-static –with-mysqld-ldflags=-all-static

meta name=”description”作用讲解(转)

一、语法:
<meta name=”name” content=”string”>
二、参数解析:
1)name项:常用的选项有Keywords(关键字) ,description(网站内容描述),author(作者),robots(机器人向导)等。
2)http-equiv项:可用于代替name项,常用的选项有Expires(期限),Pragma(cache模式),Refresh(刷新),Set-Cookie(cookie设定),Window-target(显示窗口的设定),content-Type(显示字符集的设定)等。
3)content项:根据name项或http-equiv项的定义来决定此项填写什么样的字符串。
三、应用
1、告诉浏览器网页所识别的文件类型及语言类型,比如说,我们要让浏览器识别HTM/HTML类型的简体中文网面,我们可以这样写:
< Meta http-equiv=”Content-Type” content=”text/html; charset=gb2312″ >
2、让一些搜索引擎搜索到你的网页,代码可以这样写:
< Meta Name=” Keywords” Content=”网页关键字” >
< Meta Name=” description” Content=”网页描述文字” >
要达到自动搜索引擎真正能方便地搜索到你的网页还得注意以下几点:
A、既要定义meta标记项,又要将首页正文的前200个字符定义成反映主页主题的文字。因为有些导航台在标引meta项中的关键词的同时,还要标引正文中的前200个字符。如:altavista。所以,有些人在注册完导航台后去检查注册结果时,发现导航台中的描述并不是你所希望的,而是诸如版权说明之类的文字。产生这一现象的原因就是没有注意到这一点。
B、将定义关键词的meta标记项放在定义描述的meta项之前。如:
<meta type=”keywords” content=”…….,…,…”>
<meta type=”description” content=”…,….,…”>
C、将最重要的关键词放在最前面,让相关的关键词相邻。全小写与首字母大写并存,因为有的导航台在标引时对字符的大小写是敏感的。包括标点符号不要超过250个单词
D、首页最好不用frame结构,因为frame将屏幕划分成多个窗口后,导航台不能智能地选择正确的窗口中的主页去标引。
3、让一个页面过上一定的时间,自动转到另一个页面或者站点去,如:
< Meta HTTP-EQUIV=”refresh” content=”6; url=http://hi.baidu.com/tesalo/” >
content中的6表示时间,单位为秒,url=后面是你要转向的网址,若是与你当前网页在同一目录下,可以直接写上文件名,如:
< Meta HTTP-EQUIV=”refresh” content=”6; url=page1.htm” >
4、让网页每隔一段时间刷新一次,若要10秒刷新一次,代码这样写:
<meta http-equiv=”refresh” content=”10″>
5、通过Meta可以让你进入页面时产生一些特殊效果,具体应用如下:
< meta http-equiv=”Page-Enter” content= “revealTrans(Duration=5.0,Transition=n)” > 其中,n的取值范围为0-23,具体的意义如下:
0 矩形缩小 1 矩形扩大 2 圆形缩小
3 圆形扩大 4 下到上 5 上到下
6 左到右 7 右到左 8 竖百叶窗
9 横百叶窗 10 错位横百叶窗 11 错位竖百叶窗
12 点 13 左右到中间 14 中间到左右
15 中间到上下 16 上下到中间 17 右下到左上
18 右上到左下 19 左上到右下 20 左下到右上
21 横条 22 竖条 23 以上 24种随机选择一种

6、标注作者:
<meta name=”author” content=”二度空间”>
7、控制页面缓冲,如不要页面缓冲的代码这样写:
<meta http-equiv=”Cache-Control” CONTENT=”no-cache”>