杨 发布的文章

php5.4开始,php-fpm正式成为php进程管理工具,可以有效控制内存和进程、可以平滑重载PHP配置。在./configure的时候带 –enable-fpm参数即可开启PHP-FPM。

使用PHP-FPM来控制PHP-CGI的FastCGI进程
/usr/local/php/sbin/php-fpm{start|stop|quit|restart|reload|logrotate}
--start 启动php的fastcgi进程
--stop 强制终止php的fastcgi进程
--quit 平滑终止php的fastcgi进程
--restart 重启php的fastcgi进程
--reload 重新平滑加载php的php.ini
--logrotate 重新启用log文件

配置说明

php-fpm配置文件

1.listen, 接收fastCGI请求的地址

2.pm参数,表示master进程控制子进程的工作模式

1.pm=static,始终保持固定数量的worker进程数,不会动态扩容。由pm.max_children决定。

2.pm=dynamic,表示动态调整子进程数量,但是至少会有1个子进程。具体策略如下:

  • pm.max_children :同一时刻最大子进程数。
  • pm.start_servers :启动时创建的子进程数。默认值:min_spare_servers + (max_spare_servers - min_spare_servers) / 2
  • pm.min_spare_servers:空闲状态子进程数量最小值,如果空闲进程数量少于这个值,则会创建子进程。
  • pm.max_spare_servers:空闲状态子进程数量最小值,如果空闲进程数量多于这个值,则会杀死子进程。

启动php-fpm时会根据pm.start_servers初始worker进程数,运行期间会动态调整数量,通过定时器,动态检查闲置worker数量,按一定策略调整worker数量,增加或减少。
优缺点
优点:动态扩容与缩容,不浪费系统资源
缺点:所有worker都在工作,新来的请求会有可能等待1秒,直到新创建的worker成功。

3.pm=ondemand,初始时不启动worker,只有请求来了才按需创建。pm.process_idle_timeout参数决定了,空闲超过该值的子进程将被kill掉,默认10秒。同一时刻进程数最多不超过pm.max_children。

优点:按需创建,不浪费资源
缺点:由于php-fpm是短连接,若每次请求都需要创建连接,频繁创建连接会影响并发性能。
默认是dynamic,在性能与资源上做一个平衡。

3.php_admin_value[memory_limit]

内存大小,默认32M。

master-worker

php-fpm的master进程只是负责监听管理worker进程,worker进程负责接收请求和处理。
worker进程挂掉时会给master进程发信号,master进程接收到信号后会新建一个worker继续处理。

一 概念

字符集
字符(Character)是各种文字和符号的总称,包括各国家文字、标点符号、图形符号、数字等。
字符集(Character set)是多个字符的集合,字符集种类较多,每个字符集包含的字符个数不同,常见字符集名称:ASCII字符集、GB2312字符集(中文)、BIG5字符集、 GB18030字符集(中文)、Unicode字符集等。计算机要准确的处理各种字符集文字,就需要进行字符编码,以便计算机能够识别和存储各种文字。中文文字数目大,而且还分为简体中文和繁体中文两种不同书写规则的文字,而计算机最初是按英语单字节字符设计的,因此,对中文字符进行编码,是中文信息交流的技术基础。

字符编码
字符编码(英语:Character encoding)也称字集码,是把字符集中的字符编码为指定集合中某一对象(例如:比特模式、自然数序列、8位组或者电脉冲),以便文本在计算机中存储和通过通信网络的传递。常见的例子包括将拉丁字母表编码成摩斯电码和ASCII。其中,ASCII将字母、数字和其它符号编号,并用7比特的二进制来表示这个整数。通常会额外使用一个扩充的比特,以便于以1个字节的方式存储。




- 阅读剩余部分 -

总结了下常用的语法

正常打印

 awk '{print $1}'

表达式

awk '$1 == 2 {print $1}'

表达式中包含字符 用双引号

awk '$1 == "s" {print $3}'

打印整行 $0

 awk '{print $0}'

打印最后一列 NF 大写

awk '{print $NF}'

NF 字段数量 大写

awk '{print NF}' //打印字段数量

-F 指定分隔符

awk -F ":" '{print $1, $3}'  #以“:”为分隔符分割列,然后打印第一列和第三列

-v 变量赋值

awk -v OFS=""   #指定输出分隔符

  1. 卧室离路由器的距离不要太远,5米就很弱了,太远网不稳,除非自带路由器。
  2. 不要和情侣合租,不要和情侣合租,不要和情侣合租
  3. 最好就3户,人越少越方便。
  4. 不要路边的,会发现安静许多。
  5. 注意门锁、门禁是否可用
  6. 洗手池大小

策略模式就类似于c++中的多态,同一行为有不同的实现。

在业务上会有这个场景,比如获取列表,不同的数据源获取不同的列表。那么可能会有这个实现

$upstreamType = $params['upstream_type'];
    $list = [];
    switch ($upstreamType) {
        case 1:
            $list = $this->list1**(**);
            break;
        case 4:
            $list = $this->list4**(**);
            break;
        default:
    }

- 阅读剩余部分 -

  1. 图表组件对参数的限制,数据必须是数值类型,不能是字符串类型
  2. 样式问题,居中,左右布局等等
  3. react Onclick事件要用箭头函数,不然报错
  4. 生命周期 componentDidMount、 componentWillReceiveProps
  5. 组件间通信,父子、子父、兄弟,
  6. 请求后没有加载页面,再次请求加载了,是由于缺少componentDidMount方法,这个方法是在页面加载之后再执行,如有state变化则需放在这里。
  7. eslint 检验es6语法问题,比如字符串拼接,对象数组的赋值操作等等
  8. 柱状图的值过多,文本过长覆盖,可通过旋转文本解决
  9. 趋势折线图,横坐标是日期,纵坐标是数值,日期过大,显示不了。把日期进行划分,1天内正常按小时展示。1天到15天,用天展示,15到36天按周展示,再多则按月展示。
  10. 所实现的功能:任务维度、人员维度、时效对比的展示,任务维度整体进审、已审的时间趋势。针对各任务的处置力度的展示,一个层叠条状图展示了每个任务下每个处置力度的数值,不用的颜色区分,点击对应的条会生成一个饼状图,看处置力度占比情况,最后是一个汇总表格。还有一个模块是处置的理由,理由和力度差不多,只是条状图变为饼状图,原始的饼状图,是各自理由的占比,点击对应的块会展示这个理由所有的处置力度的占比,最后也是一个表格汇总。
  11. 人员维度,统计员工的审核情况与上班情况。第一块是审核情况,展现形式是一个带有排序的条状图,左边为审核量,右边为审核时效。纵坐标是员工。下面是一个统计员工上班情况的表格,包括的指标有上班时间、暂停次数、暂停时长、超时条数。暂停有个记录暂停时间的表,一条记录包括员工id、暂停开始时间、暂停结束时间。
  12. 时效对比。两块,第一是新系统与老系统审核时间的对比;2是每个任务新老系统的对比。老系统的数据同步到实时流的表中,审核状态标记为2,

punycode 是一种DNS字符集编码。是一种表示Unicode码和ASCII码的有限的字符集。

出现的场景是应对国际化域名。
特点&组成:26个英文字母和[0-9]10个数字、以及'-'组成。
所以如果使用中文域名,那么服务器应配置punycode编码后的域名。

例如本域名。

// 访问最多的ip前十个
cat 'file' | awk '{print $x}' | sort | uniq -c | sort -nr | head -n 10

uniq

输出去重后的内容

// 去重并显示重复次数
uniq -c