配置:在FPM中,可以使用不同的设置来运行多个进程池。 这些设置可以针对每个进程池单独设置。
https://www.php.net/manual/zh/install.fpm.configuration.php

pm string
#设置进程管理器如何管理子进程。可用值:static,ondemand,dynamic。必须设置。
#static - 子进程的数量是固定的(pm.max_children)。
#ondemand - 进程在有需求时才产生(当请求时才启动。与 dynamic 相反,在服务启动时 pm.start_servers 就启动了。
#dynamic - 子进程的数量在下面配置的基础上动态设置:pm.max_children,pm.start_servers,pm.min_spare_servers,pm.max_spare_servers。

pm.max_children int
#pm 设置为 static 时表示创建的子进程的数量,pm 设置为 dynamic 时表示最大可创建的子进程的数量。必须设置。
#该选项设置可以同时提供服务的请求数限制。类似 Apache 的 mpm_prefork 中 MaxClients 的设置和 普通PHP FastCGI中的 PHP_FCGI_CHILDREN 环境变量。

pm.start_servers in
#设置启动时创建的子进程数目。仅在 pm 设置为 dynamic 时使用。默认值:min_spare_servers + (max_spare_servers - min_spare_servers) / 2。

pm.min_spare_servers int
#设置空闲服务进程的最低数目。仅在 pm 设置为 dynamic 时使用。必须设置。

pm.max_spare_servers int
#设置空闲服务进程的最大数目。仅在 pm 设置为 dynamic 时使用。必须设置。

pm.process_idle_timeout mixed
#秒数,多久之后结束空闲进程。 仅当设置 pm 为 ondemand。 可用单位:s(秒),m(分),h(小时)或者 d(天)。默认单位:10s。

pm.max_requests int
#设置每个子进程重生之前服务的请求数。对于可能存在内存泄漏的第三方模块来说是非常有用的。如果设置为 '0' 则一直接受请求,等同于 PHP_FCGI_MAX_REQUESTS 环境变量。默认值:0。

pm.status_path string
#FPM 状态页面的网址。如果没有设置,则无法访问状态页面,默认值:无。

access.log string
#Access log 文件。 默认值:不设置

access.format string
#access log 的格式。 默认值: "%R - %u %t \"%m %r\" %s"

查看状态:

//查看当前php-fpm总进程数, 其中RSS就是占用的内存情况
ps -ylC php-fpm --sort:rss

下载框架:https://github.com/yiichina/yii

创建一个新的空白应用(cmd 命令):

framework/yiic [appname] [path/to]
  • 入口配置:protected/config/main.php
'components'=>[
    //伪静态配置
    'urlManager'=>array(
            'urlFormat'=>'path',
            'rules'=>array(
                '<controller:\w+>/<id:\d+>'=>'<controller>/view',
                '<controller:\w+>/<action:\w+>/<id:\d+>'=>'<controller>/<action>',
                '<controller:\w+>/<action:\w+>'=>'<controller>/<action>',
            ),
        ),
]
  • 伪静态:.htaccess
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !^/(.*)\.(css|jpg|js|gif|png|bmp)/
RewriteRule ^(.*)$ index.php?/$1 [QSA,PT,L]
</IfModule>
//获取配置文件main中的配置值和应用组件
Yii::app()->basePath;
Yii::app()->name;
Yii::app()->params->adminEmail;
//组件配置在main中的components键中
Yii::app()->db;
Yii::app()->cache;
Yii::app()->user;
  • 可以在controller 目录创建 actions (可自定义)目录用于存放action类,达到action复用的目的:
//protected/controllers/post/UpdateAction.php
class UpdateAction extends CAction {
    public function run() {
        // place the action logic here
    }
}

//protected/controllers/ArticleController.php
class ArticleController extends Controller {

    public function actions() {
        return [
            'edit'=>'application.controllers.post.UpdateAction'
        ];
    }
}
  • 可以在action方法中加入参数,可直接获取到get来的参数:
public function actionView($id, $act, $name='joyber') {
    // main中的路由配置中的$id动态参数
    echo $id;
    // $_GET['act']
    echo $act;
    // $_GET['name'] 不存在name参数时默认值:joyber
    echo $name;
    // post xxy
    $xxy = Yii::app()->request->getPost('xxy');
}
  • widget 自定义组件 可以放在components 目录 视图中应用:<?php $this->widget('MyWidget', ['data'=>123]) ?>
//components/MyWidget.php
class MyWidget extends CWidget {

    public $btn;

    public function init() {

        // 此方法会被 CController::beginWidget() 调用
    }

    public function run() {
        // 此方法会被 CController::endWidget() 调用
        parent::run(); // TODO: Change the autogenerated stub
        $this->render('my', ['btn'=>$this->btn, 'name'=>'my test widget']);
    }

}

//view file: components/views/my.php
<input type="text" value="<?=$name?>">
<button><?=$btn?></button>

磁盘读写状况:

#注:每1秒 显示 1次 显示 10次
sar -b 1 10

19时54分35秒 tps rtps wtps bread/s bwrtn/s
19时54分36秒 0.00 0.00 0.00 0.00 0.00
19时54分37秒 0.00 0.00 0.00 0.00 0.00
平均时间:   0.00 0.00 0.00 0.00 0.00

tps: 每秒向磁盘设备请求数据的次数,包括读、写请求,为rtps与wtps的和。出于效率考虑,每一次IO下发后并不是立即处理请求,而是将请求合并(merge),这里tps指请求合并后的请求计数。

rtps: 每秒向磁盘设备的读请求次数

wtps: 每秒向磁盘设备的写请求次数

bread: 每秒从磁盘读的bytes数量

bwrtn: 每秒向磁盘写的bytes数量

说明

查看io进程

命令:iotop
注:DISK TEAD:n=磁盘读/每秒 DISK WRITE:n=磁盘写/每秒。
注:标黄的可查看磁盘的读写速率,下面可以看到使用的io。

# hostnamectl -h

  -h --help              显示帮助
     --version           显示安装包的版本
     --transient         修改临时主机名
     --static            修改瞬态主机名
     --pretty            修改灵活主机名
  -P --privileged        在执行之前获得的特权
     --no-ask-password   输入密码不提示
  -H --host=[USER@]HOST  操作远程主机

Commands:
  status                 显示当前主机名设置
  set-hostname NAME      设置系统主机名
  set-icon-name NAME     为主机设置icon名
  set-chassis NAME       设置主机平台类型名

CentOS7中有三种定义的主机名:
静态的(static)、瞬态的(transient)、和灵活的(pretty)。
静态主机名也称为内核主机名,是系统在启动时从/etc/hostname内自动初始化的主机名。
瞬态主机名是在系统运行时临时分配的主机名。
灵活主机名则允许使用特殊字符的主机名。

1.查看状态

# hostnamectl 或者 # hostnamectl status   (显示的结果都一样)

2.修改主机名称

# hostnamectl set-hostname Linuxprobe
# hostnamectl status

有时候,我们害怕别人修改我们创建的文件,或者是误删我们创建的文件,那么我们可以使用下面的方法进行控制即可

1.创建不可删除文件

Linux:/qinys/oliver # touch test.sh
Linux:/qinys/oliver # chattr +i test.sh 
Linux:/qinys/oliver # rm -rf test.sh 
rm: cannot remove `test.sh': Operation not permitted

2.将文件设置可以删除

Linux:/qinys/oliver # chattr -i test.sh 
Linux:/qinys/oliver # rm -rf test.sh

此时就可以删除了!

详解:

一 chattr命令格式
chattr [+-=] [选项] 文件或目录名
+:增加权限
-:删除权限
=:等于某权限
chattr选项包括:i和a
a等价于append
i等价于insert
i:如果对文件设置了i属性,那么不允许对文件进行删除,改名,也不能添加和修改数据;如果对目录设置了i属性,那么只能修改目录下文件的数据,但不允许建立和删除文件。
a:如果对文件设置了a属性,那么只能在文件中增加数据,但是不能删除也不能修改数据;如果对目录设置了a属性,那么只允许在目录中建立和修改文件,但是不允许删除。
注意:对root用户生效
 
二 lsattr命令格式
lsattr 选项 文件名
选项:
-a 显示所有文件和目录
-d 若目标是目录,仅列出目录本身的属性,而不是子文件的属性
————————————————
版权声明:本文为CSDN博主「cakincqm」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/chengqiuming/article/details/78602006