原生JS获取元素 margin padding 等值的方法
var getStyleVal =function(el, attr){ var v=0; if(el.currentStyle){ v= el.currentStyle[attr] } else { v= getComputedStyle(el,false)[attr]; } return parseInt(v.replace("px","")) } var getStyleVal =function(el, attr){ var v=0; if(el.currentStyle){ v= el.currentStyle[attr] } else { v= getComputedStyle(el,false)[attr]; } return parseInt(v.replace("px","")) } #列出php-fpm进程,按内存排序
ps -ylC php-fpm --sort:rss
#列出所有用户的进程
ps aux | grep php-fpmLinux上进程有5种状态:
进程状态 含义 对应ps命令的状态码
运行 正在运行或在运行队列中等待 R 运行 runnable (on run queue)
中断 休眠中, 受阻, 在等待某个条件的形成或接受到信号 S 中断 sleeping
不可中断 收到信号不唤醒和不可运行, 进程必须等待直到有中断发生 D 不可中断 uninterruptible sleep (usually IO)
僵死 进程已终止, 但进程描述符存在, 直到父进程调用wait4()系统调用后释放 Z 僵死 a defunct (”zombie”) process
停止 进程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信号后停止运行运行 T 停止 traced or stopped
ps命令有很多参数,具体如下:
命令 含义
e 显示所有进程,环境变量
f 全格式
h 不显示标题
l 长格式
w 宽输出
a 显示终端上地所有进程,包括其他用户地进程
r 只显示正在运行地进程
x 显示没有控制终端地进程
u 以用户为主的格式来显示程序状况
au 显示较详细的资讯
aux 显示所有包含其他使用者的行程
-C<命令> 列出指定命令的状况
--lines<行数> 每页显示的行数
--width<字符数> 每页显示的字符数
--help 显示帮助信息
--version 显示版本显示
其中STAT状态位常见的状态字符有
D //无法中断的休眠状态(通常 IO 的进程);
R //正在运行可中在队列中可过行的;
S //处于休眠状态;
T //停止或被追踪;
W //进入内存交换 (从内核2.6开始无效);
X //死掉的进程 (基本很少见);
Z //僵尸进程;
< //优先级高的进程
N //优先级较低的进程
L //有些页被锁进内存;
s //进程的领导者(在它之下有子进程);
l //多线程,克隆线程(使用 CLONE_THREAD, 类似 NPTL pthreads);
+ //位于后台的进程组;
配置:在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]'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>',
),
),
]<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;//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'
];
}
}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');
}//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 1019时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数量
说明
命令:iotop
注:DISK TEAD:n=磁盘读/每秒 DISK WRITE:n=磁盘写/每秒。
注:标黄的可查看磁盘的读写速率,下面可以看到使用的io。