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秒.
; Default timeout forsocket based streams (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手册里是这么写的:
Return Values
Returns the old value onsuccess, FALSE on failure.
哎,看手册太不细心了!
posix_kill
nginx的日志轮循脚本我是用php写的,为了更php,通知nginx重新生成新的日志的时候我用了posix_kill:
posix_kill($nginx_pid,SIGUSR1)
在我用的N台机器上,这个函数都是正常工作的.可是把这个脚本借给了一个哥们儿,它机器上竟然报:
Warning: posix_kill()expects parameter 2 to be long, string given
看函数原形:bool posix_kill ( int$pid , int $sig )
第二个参数确实要给int.为啥SIGUSR1在我的机器上认在哥们儿机器就不行了呢?php版本问题?哥们的php版本竟然比我的高!
网上找了半天SIGUSR1对应的int值是多少,竟然找不到,最后还是研究kill命令,无意间输入:kill -l得到了.
1) SIGHUP 2) SIGINT 3)SIGQUIT 4) SIGILL
5) SIGTRAP 6) SIGABRT 7)SIGEMT 8) SIGFPE
9) SIGKILL 10) SIGBUS 11)SIGSEGV 12) SIGSYS
13) SIGPIPE 14) SIGALRM 15)SIGTERM 16) SIGURG
17) SIGSTOP 18) SIGTSTP 19)SIGCONT 20) SIGCHLD
21) SIGTTIN 22) SIGTTOU 23)SIGIO 24) SIGXCPU
25) SIGXFSZ 26) SIGVTALRM27) SIGPROF 28) SIGWINCH
29) SIGINFO 30) SIGUSR1 31)SIGUSR2
上面是mac的,而linux的SIGUSR1对应的值竟然不一样,无语一个.
1) SIGHUP 2) SIGINT 3)SIGQUIT 4) SIGILL 5) SIGTRAP
6) SIGABRT 7) SIGBUS 8)SIGFPE 9) SIGKILL 10) SIGUSR1
11) SIGSEGV 12) SIGUSR2 13)SIGPIPE 14) SIGALRM 15) SIGTERM
16) SIGSTKFLT 17) SIGCHLD18) SIGCONT 19) SIGSTOP 20) SIGTSTP
21) SIGTTIN 22) SIGTTOU 23)SIGURG 24) SIGXCPU 25) SIGXFSZ
26) SIGVTALRM 27) SIGPROF28) SIGWINCH 29) SIGIO 30) SIGPWR
31) SIGSYS 34) SIGRTMIN 35)SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+3
38) SIGRTMIN+4 39)SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8
43) SIGRTMIN+9 44)SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13
48) SIGRTMIN+14 49) SIGRTMIN+1550) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12
53) SIGRTMAX-11 54)SIGRTMAX-10 55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7
58) SIGRTMAX-6 59)SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2
63) SIGRTMAX-1 64) SIGRTMAX
如果想同时支持不同的系统怎么办呢?加个判断呗,兄弟连PHP培训
小编偷偷告诉你:php有个叫
PHP_OS
的神器.
PHP培训教程 php几个不起眼儿的小技巧的更多相关文章
- php几个不起眼儿的小技巧
说是不起眼儿的小技巧,其实应该说是不常用的常规应用吧.很多事情就是这样,知道是一马事儿,会用是一马事儿,精习又是另外一马事儿.而成为高手更是需要扎实的基本功. str_repeat 重复输出字符串就靠 ...
- [转]11个教程中不常被提及的JavaScript小技巧
原文地址: https://www.cnblogs.com/ld1024/p/10723827.html 这次我们主要来分享11个在日常教程中不常被提及的JavaScript小技巧,他们往往在我们的日 ...
- 11个教程中不常被提及的JavaScript小技巧
这次我们主要来分享11个在日常教程中不常被提及的JavaScript小技巧,他们往往在我们的日常工作中经常出现,但是我们又很容易忽略. 1.过滤唯一值 Set类型是在ES6中新增的,它类似于数组,但是 ...
- 扒一扒那些教程中不常被提及的JavaScript小技巧
1.过滤唯一值 Set类型是在ES6中新增的,它类似于数组,但是成员的值都是唯一的,没有重复的值.结合扩展运算符(...)我们可以创建一个新的数组,达到过滤原数组重复值的功能. const array ...
- 通达OA 小飞鱼工作流在线培训教程文件夹及意见征集
最近通达OA技术交流群有不少朋友反映说表单设计这块 改动样式的问题,这块须要html和css的改动.本来最近正好要在工作流这块准备做一个系列的课程,都是基础的设置主要是给刚接触工作流的朋友用的,大家有 ...
- SOA体系结构基础培训教程-规范标准篇
引子:本文是<SOA体系结构基础培训教程>第3章<SOA标准与规范>课件,版权所有,转载请注明出处. 随着SOA在业界的应用日益广泛,SOA的标准化问题也成为各界日益关注的焦点 ...
- SOA体系结构基础培训教程
SOA体系结构基础培训教程-规范标准篇 引子:本文是<SOA体系结构基础培训教程>第3章<SOA标准与规范>课件,版权所有,转载请注明出处. 随着SOA在业界的应用日益广泛,S ...
- HTML 培训教程
HTML培训教程 1. HTML概述 1.1. 什么是 HTML 文件? n ...
- Linux视频培训教程
很详尽的Linux培训教程,既包含日常工作常常要用到的实践及技巧,又包含Linux认证及系统管理及架构,讲的很不错.最关键的.这么具体,完整的教程还是免费的.花了点时间拿它整理了下. 第一部分: Li ...
随机推荐
- MySQL各种函数/语法
@limit pos,len select * from table limit 5,10 只显示查出结果的6-15行 ---------------------------------------- ...
- Adobe出品(支持IOS,android,web调用)免费插件编辑图片
<head runat="server"><meta http-equiv="Content-Type" content="text ...
- mysql——多表——内连接查询
内连接查询:可以查询两个或者两个以上的表,当两个表中存在表示相同意义的字段时,可以通过该字段来连接这两个表: 当该字段的值相等时,就查询出该记录. 前期准备两个表: ), d_id ), name ) ...
- 为 JS 的字符串,添加一个 format 的功能。
<script> String.prototype.format = function (kwargs) { var ret = this.replace(/\{(\w+)\}/g, fu ...
- 2018icpc宁夏邀请赛网络赛_G_Trouble of Tyrant
题意 一列\(n\)个点,给定一个特殊的图,有两种边\(E(1,i)\)和\(E(i-1,i)\),多个询问,每次给一个\(d\),求所有路径长度加上\(d\)后1到\(n\)的最短路. 分析 首先这 ...
- 查找元素在list中的位置以及折半查询
问题 查找某个值在list中的位置 解决思路 能够用折半查询的方法解决此问题. 解决(Python) #! /usr/bin/env python #coding:utf-8 #折半查找某个元素在li ...
- luogu P5328 [ZJOI2019]浙江省选
传送门 每个人都可以看成一条直线\(y=ax+b\),所以我们要求的是每条线在整点处,上方线的数量的最小值(注意多条直线如果交于同一整点互不影响) 如果\(m=1\),其实只要求出半平面交,然后在半平 ...
- markdown的日常使用
# POI前端接口 ``` 描述: 项目poi接口 作者: X-Wolf 时间: -- ``` ------ [TOC] ------ ##声明 ### 请求地址 ``` DOMAIN/strateg ...
- HTTPS到底是什么
Http存在的问题 上过网的朋友都知道,网络是非常不安全的.尤其是公共场所很多免费的wifi,或许只是攻击者的一个诱饵.还有大家平时喜欢用的万能钥匙,等等.那我们平时上网可能会存在哪些风险呢? ...
- ajax异步 —— javascript
目录 ajax是什么 原生ajax jquery ajax ajax跨域 ajax是什么 作用:不必重新加载整个页面,更新部分页面内容. 大概使用过程:通过后台提供的数据接口,ajax获取数据,动态修 ...