分享一个支持UTF-8的PHP字符串截取函数

截取UTF-8编码字符串的方法有很多,我也分享一个:

function cutStr($Str, $Length)
{
    global $s;
    $i = 0;
    $l = 0;
    $ll= strlen($Str);
    $s = $Str;
    $f = true; 

    while ($i <= $ll) {
        if (ord($Str{$i}) < 0x80) {
            $l++; $i++;
        } elseif (ord($Str{$i}) < 0xe0) {
            $l++; $i += 2;
        } elseif (ord($Str{$i}) < 0xf0) {
            $l += 2; $i += 3;
        } elseif (ord($Str{$i}) < 0xf8) {
            $l += 1; $i += 4;
        } elseif (ord($Str{$i}) < 0xfc) {
            $l += 1; $i += 5;
        } elseif (ord($Str{$i}) < 0xfe) {
            $l += 1; $i += 6;
        }
        if (($l >= $Length - 1) && $f) {
            $s = substr($Str, 0, $i);
            $f = false;
        }
        if (($l > $Length) && ($i < $ll)) {
            $s = $s . '...';
            break; //如果进行了截取,字符串末尾加省略符号“...”
        }
    }
    return $s;
}

Nginx超微软成世界第二大网络服务器

Nginx

1月5日消息,据国外媒体报道,英国网络追踪和调查机构Netcraft近日公布报告指出,由于受到戴尔公司董事长Michael Dell及其他风险资本家的青睐,新兴的开源网络服务器公司Nginx已经超过了微软IIS(互联网信息服务器Internet Information Server),成为了世界上所有活动网站中第二大网络服务器供应商。

根据Netcraft的“2012年1月网络服务器调查报告”指出,在过去的一个月中,Nginx在各种网站中都获得了市场份额的提升,而其竞争对手Apache、微软和谷歌的市场份额均有所下滑。

据悉,自从去年7月份Nginx创始人Andrew Alexeev和Igor Syosev创建公司的以来,就已经带来了一定的市场冲击。该平台于2004年推出,主要致力于为世界上最繁忙的1000家网站中前25%的公司,提供高容量的网络流量服务,包括Facebook、Zappos、Groupon、Hulu、Dropbox以及WordPress等。Nginx去年10月份收到了来自戴尔首席执行官迈克尔·戴尔的私人风险投资公司MSD Capital、BV Capital以及Runa Capital的300万美元投资。

阅读更多

2011年使用率增长最快的十大Web技术

W3techs网站评出了2011年十大使用增速最快的Web技术,本文对其进行编译供各位参考。注意,该评选结果是在针对前100万流行网站(根据Alexa值统计)进行调查统计出的。

以下是2011年前100万流行网站中使用率增长最多的10大Web技术。

1. jQuery

jQuery在前100万流行网站选择中新增了惊人的145 300个名额。也就是,在过去的一年中,每天都有398个网站开始使用它。jQuery目前在所有网站中的使用率已达到了42.8%。其市占率更是达到了 84.1%,许多人都将它视为JavaScript库的事实标准。

2. UTF-8

UTF-8在去年的榜单中居于榜首地位,而且也正变得越来越流行。去年有82 6000个新增网站选择使用它。目前已有超过2/3的网站将字符编码切换为UTF-8。

阅读更多

Apache日志文件每日自动切割的配置方法

打开Apache的httpd.conf文件,分别找到:

错误日志
ErrorLog logs/error_log
修改为
ErrorLog “| /usr/local/apache/bin/rotatelogs /usr/local/apache/logs/error_log_%Y%m%d 86400 480”

访问日志
CustomLog logs/access_log common
修改为
CustomLog “| /usr/local/apache/bin/rotatelogs /usr/local/apache/logs/access_log_%Y%m%d 86400 480” common

解决FCKeditor在IE9下弹出层兼容问题

在IE9下,FCKeditor的弹出浮动层会出现兼容bug,下面提供一个解决方法:

打开下面这个文件
fckeditor/editor/js/fckeditorcode_ie.js

找到第 38行的这个方法:FCKTools.RegisterDollarFunction

将原来的
FCKTools.RegisterDollarFunction=function(A){A.$=A.document.getElementById;};

修改方法为:
FCKTools.RegisterDollarFunction=function(A){A.$=function(v){return A.document.getElementById(v);}};

定时处理MySQL超时Locked进程的Shell脚本

最近一段时间,我刚刚进入一家新公司,并接手了这里的一个站点,由于这个站点的架构设计不太合理,导致MySQL的压力始终很大,经常出现超时的Locked进程,于是编写了一段Linux的Shell脚本来定时kill掉这些进程。

脚本如下:

#!/bin/bash
mysql_pwd="xxxxxx" #mysql的root密码
mysql_exec="/usr/local/mysql/bin/mysql"
tmp_dir="/tmp"
file_sh="$tmp_dir/mysql_kill_locked.sh"
file_tmp="$tmp_dir/mysql_kill_locked.tmp"
file_log="$tmp_dir/mysql_kill_locked.log" #日志
$mysql_exec -uroot -p$mysql_pwd -e "show processlist" | grep -i "Locked" > $file_tmp
cat $file_tmp >> $file_log
for line in `cat $file_tmp | awk '{print $1}'`
do
echo "$mysql_exec -uroot -p$mysql_pwd -e \"kill $line\"" >> $file_sh
done
chmod +x $file_sh
sh $file_sh #执行临时脚本
> $file_sh #清空临时脚本

最后,将这段脚本加入到crontab,定时执行即可。

阳光部落原创,更多内容请访问 http://www.sunbloger.com/

Nginx手册:Gzip压缩模块详解

Nginx中的Gzip模块,支持在线实时压缩输出数据流。有利于减少访问网站过程中传输的数据量,从而减少带宽资源的占用率。

使用范例

gzip on;
gzip_min_length 1000;
gzip_proxied expired no-cache no-store private auth;
gzip_types text/plain application/xml;

指令详解:

阅读更多

Nginx的rewrite规则基础知识

Nginx的rewrite规则与Apache有一些区别,特地找来一些资料,学习一下Nginx的rewrite规则。

正则表达式匹配,其中:
~ 为区分大小写匹配
~* 为不区分大小写匹配
!~ 和 !~* 分别为区分大小写不匹配及不区分大小写不匹配

文件及目录匹配,其中:
-f 和 !-f 用来判断是否存在文件
-d 和 !-d 用来判断是否存在目录
-e 和 !-e 用来判断是否存在文件或目录
-x 和 !-x 用来判断文件是否可执行

阅读更多