PHP培训教程 php几个不起眼儿的小技巧

说是不起眼儿的小技巧,其实应该说是不常用的常规应用吧.很多事情就是这样,知道是一马事儿,会用是一马事儿,精习又是另外一马事儿.而成为高手更是需要扎实的基本功.

str_repeat

重复输出字符串就靠它了,类似于perl里面的x

php-r'echostr_repeat("ABC",5),"\n";'

ABCABCABCABCABC

substr

这个是用来截取字符器的,比如要截取字符串的第一个字母:

$string='abcdefg'

substr($string,0,1)就得到了a了.不过现在笔者已经习惯用$string[0]了.顺便说一下,当判断string的长度是不是7的时候,现在改用了isset($string[6]),因为据说isset比strlen速度快.同理,这个经验也于适用于count的时候.

trim

trim这家伙是用来去首尾空白和尾部的换行的.用的时间长了,以至于笔者为它就是专门干这个的.没想它还可以接受一个参数列表,用来去除首尾不想用的字符,比如要去除'%abcdef%'的%

trim('%abcdef%','%')

continue

这个家伙是用来跳过后面的循环的.用得时间长了,笔者一直以为它是没有参数的,直到有一次笔者要跳出一个三层的循环...

ini_set

我们在写基于网络连接的程序的时候考虑到容错有必要设置一下socket超时时间.php.ini里定义的默认时间是60秒.

;Defaulttimeoutforsocketbasedstreams(seconds)

;http://php.net/default-socket-timeout

default_socket_timeout=60

php手册里可以用ini_set修改php.ini的配置,于是想到了:

ini_set('default_socket_timeout',6);

笔者在使用一些新发现的函数的时候,习惯是:

var_dump(ini_set('default_socket_timeout',6));

一运行结果提示:

string(2)"60"

咦?难道设置失败?换了几台机器试还是这样.哎,怎么办呢?研究了半天终于发现一个问题,php手册里是这么写的:

ReturnValues

Returnstheoldvalueonsuccess,FALSEonfailure.

哎,看手册太不细心了!

posix_kill

nginx的日志轮循脚本我是用php写的,为了更php,通知nginx重新生成新的日志的时候我用了posix_kill:

posix_kill($nginx_pid,SIGUSR1)

在我用的N台机器上,这个函数都是正常工作的.可是把这个脚本借给了一个哥们儿,它机器上竟然报:

Warning:posix_kill()expectsparameter2tobelong,stringgiven

看函数原形:boolposix_kill(int$pid,int$sig)

第二个参数确实要给int.为啥SIGUSR1在我的机器上认在哥们儿机器就不行了呢?php版本问题?哥们的php版本竟然比我的高!

网上找了半天SIGUSR1对应的int值是多少,竟然找不到,最后还是研究kill命令,无意间输入:kill-l得到了.

1)SIGHUP2)SIGINT3)SIGQUIT4)SIGILL

5)SIGTRAP6)SIGABRT7)SIGEMTSIGFPE

9)SIGKILL10)SIGBUS11)SIGSEGV12)SIGSYS

13)SIGPIPE14)SIGALRM15)SIGTERM16)SIGURG

17)SIGSTOP18)SIGTSTP19)SIGCONT20)SIGCHLD

21)SIGTTIN22)SIGTTOU23)SIGIO24)SIGXCPU

25)SIGXFSZ26)SIGVTALRM27)SIGPROF28)SIGWINCH

29)SIGINFO30)SIGUSR131)SIGUSR2

上面是mac的,而linux的SIGUSR1对应的值竟然不一样,无语一个.

1)SIGHUP2)SIGINT3)SIGQUIT4)SIGILL5)SIGTRAP

6)SIGABRT7)SIGBUSSIGFPE9)SIGKILL10)SIGUSR1

11)SIGSEGV12)SIGUSR213)SIGPIPE14)SIGALRM15)SIGTERM

16)SIGSTKFLT17)SIGCHLD18)SIGCONT19)SIGSTOP20)SIGTSTP

21)SIGTTIN22)SIGTTOU23)SIGURG24)SIGXCPU25)SIGXFSZ

26)SIGVTALRM27)SIGPROF28)SIGWINCH29)SIGIO30)SIGPWR

31)SIGSYS34)SIGRTMIN35)SIGRTMIN+136)SIGRTMIN+237)SIGRTMIN+3

38)SIGRTMIN+439)SIGRTMIN+540)SIGRTMIN+641)SIGRTMIN+742)SIGRTMIN+8

43)SIGRTMIN+944)SIGRTMIN+1045)SIGRTMIN+1146)SIGRTMIN+1247)SIGRTMIN+13

48)SIGRTMIN+1449)SIGRTMIN+1550)SIGRTMAX-1451)SIGRTMAX-1352)SIGRTMAX-12

53)SIGRTMAX-1154)SIGRTMAX-1055)SIGRTMAX-956)SIGRTMAX-857)SIGRTMAX-7

58)SIGRTMAX-659)SIGRTMAX-560)SIGRTMAX-461)SIGRTMAX-362)SIGRTMAX-2

63)SIGRTMAX-164)SIGRTMAX

如果想同时支持不同的系统怎么办呢?加个判断呗,兄弟连PHP培训

小编偷偷告诉你:php有个叫

PHP_OS

的神器.

相关推荐