本文的目的是介绍php–当有人发布内容时,Facebook如何更新内容的详细情况,特别关注facebook怎么更新的相关信息。我们将通过专业的研究、有关数据的分析等多种方式,为您呈现一个全面的了解ph
本文的目的是介绍php – 当有人发布内容时,Facebook如何更新内容的详细情况,特别关注facebook怎么更新的相关信息。我们将通过专业的研究、有关数据的分析等多种方式,为您呈现一个全面的了解php – 当有人发布内容时,Facebook如何更新内容的机会,同时也不会遗漏关于12.21 php-fpm 的 pool 12.22 php-fpm 慢执行日志 12.23 open_basedir 12.24 php-fpm 进程管理、12.21 php-fpm的pool 12.22 php-fpm慢执行日志 12.23 open_basedir 12.24 php-fpm进程管理、12.21 php-fpm的pool12.22 php-fpm慢执行日志12.23 open_basedir12.24 php-fpm进程管理、5、PHP-将浮点数转为整数 php 浮点数比较 php 浮点数精度 php 浮点数格式的知识。
本文目录一览:- php – 当有人发布内容时,Facebook如何更新内容(facebook怎么更新)
- 12.21 php-fpm 的 pool 12.22 php-fpm 慢执行日志 12.23 open_basedir 12.24 php-fpm 进程管理
- 12.21 php-fpm的pool 12.22 php-fpm慢执行日志 12.23 open_basedir 12.24 php-fpm进程管理
- 12.21 php-fpm的pool12.22 php-fpm慢执行日志12.23 open_basedir12.24 php-fpm进程管理
- 5、PHP-将浮点数转为整数 php 浮点数比较 php 浮点数精度 php 浮点数格式
php – 当有人发布内容时,Facebook如何更新内容(facebook怎么更新)
我真的很感兴趣的是facebook在其他人发布内容时如何仅加载内容.我唯一能想到的是使用下面的内容来不断更新页面而不重新加载页面.
setInterval(ajax_stuff, 1000);
我正在观看控制台,确实发生了请求,并在页面中添加了另一个新内容.
我希望能够了解这是如何完成的.如果我可以在项目中使用它,那真的很棒.我的意思是每秒做setInterval确实消耗了很多资源.仅在需要时才提出请求是最好的做事方式.具体来说我想在这个项目中使用它:
https://github.com/anchetaWern/ChatRo
它基本上只是一个聊天框,目前它仍然使用setInterval().我想在聊天会话中的其他人实际输入内容时仅更新内容.
解决方法:
我不能直接谈论FaceBook如何做到这一点,但一般来说,你应该看看WebSockets.
WebSockets允许页面上的JavaScript与服务器保持开放连接,从而可以近乎实时地将数据推送到连接到服务器的所有客户端.
看看http://pusher.com
此外,谷歌Web套接字.
12.21 php-fpm 的 pool 12.22 php-fpm 慢执行日志 12.23 open_basedir 12.24 php-fpm 进程管理
12.21 php-fpm 的 pool
每一个站点使用独立的 pool (池子), 好处是当其中一个 php 502 了 (php 资源耗尽了), 也不会影响到其他网站.
vim /usr/local/php-fpm/etc/php-fpm.conf //在[global]部分增加如下, 并删除默认的 www 的pool
include = etc/php-fpm.d/*.conf
/usr/local/php-fpm/sbin/php-fpm -t //测试php-fpm.conf语法错误
mkdir /usr/local/php-fpm/etc/php-fpm.d/
cd /usr/local/php-fpm/etc/php-fpm.d/
vim www.conf //内容如下
[www]
listen = /tmp/php-fcgi.sock
listen.mode = 666
user = php-fpm
group = php-fpm
pm = dynamic
pm.max_children = 50
pm.start_servers = 20
pm.min_spare_servers = 5
pm.max_spare_servers = 35
pm.max_requests = 500
rlimit_files = 1024
vim test.conf //内容如下
[test]
listen = /tmp/www.sock
listen.mode=666
user = php-fpm
group = php-fpm
pm = dynamic
pm.max_children = 50
pm.start_servers = 20
pm.min_spare_servers = 5
pm.max_spare_servers = 35
pm.max_requests = 500
rlimit_files = 1024
测试:
service php-fpm restart // 或者 /etc/init.d/php-fpm restart
ps aux | grep php //可以看到有多个pool
可以把 vim /usr/local/nginx/conf/vhost/test.com.conf 的 sock 给改掉成 test.sock
/usr/local/nginx/sbin/nginx -t && /usr/local/nginx/sbin/nginx -s reload
访问网站 测试是否正确解析 php : http://www.test.com/1.php
12.22 php-fpm 慢执行日志
慢执行日志,我们用来分析 php 网站为什么访问慢
vim /usr/local/php-fpm/etc/php-fpm.d/test.conf //加入如下内容
request_slowlog_timeout = 2 //超过2秒钟,我就要记录日志 一般情况写成2秒, 1秒太短了点
slowlog = /usr/local/php-fpm/var/log/test-slow.log
/usr/local/php-fpm/sbin/php-fpm -t
/etc/init.d/php-fpm reload //重新加载php 配置文件
看见产生了慢执行日志
vim /data/wwwroot/test.com/sleep.php//写入如下内容
?php
echo “test slow log”;
sleep(3);
echo “done”;
?>
curl -x127.0.0.1:80 www.test.com/sleep.php 测试报错:
编辑 vim /usr/local/php-fpm/etc/php.ini
打开
/etc/init.d/php-fpm reload
查看到语法错误
修改 vim /data/wwwroot/test.com/sleep.php // 用英文的双引号和分号
<?php
echo "test slow log";
sleep(3);
echo "done";
?>
curl -x127.0.0.1:80 www.test.com/sleep.php
cat /usr/local/php-fpm/var/log/www-slow.log //查看慢执行日志
会告诉你哪个php文件慢, 而且会告诉你php文件第三行慢
12.23 open_basedir
安全选项 open_basedir, 主要用来定义 限制网站能访问的目录 (限制 php 在指定的目录里活动)
vim /usr/local/php-fpm/etc/php-fpm.d/test.conf //加入如下内容
php_admin_value[open_basedir]=/data/wwwroot/test.com:/tmp
创建测试php脚本,进行测试
etc/init.d/php-fpm restart
curl -x127.0.0.1:80 www.test.com/1.php -I
再次更改test.conf,修改路径,再次测试
故意改错成 php_admin_value[open_basedir]=/data/wwwroot/111test.com:/tmp
配置错误日志
vim /usr/local/php-fpm/etc/php.ini
display_errors=off //是否在页面上显示错误, 如果否, 需定义log_errors
log_errors=on //错误日志是否开启 如果是, 则需定义 log_errors 和 error_log , error_reporting
error_log = /usr/local/php-fpm/var/log/php_errors.log //定义错误日志的路径
error_reporting=E_ALL & ~E_NOTICE //错误日志记录的级别, 生产环境用 E_ALL & ~E_NOTICE(阿铭说) , 我看到默认生产环境配置文件 用 E_ALL & ~E_DEPRECATED & ~E_STRICT
创建错误日志文件并设置权限
touch /usr/local/php-fpm/var/log/php_errors.log
chmod 666 /usr/local/php-fpm/var/log/php_errors.log
/etc/init.d/php-fpm restart
再次测试
查看错误日志
tail -f /usr/local/php-fpm/var/log
12.24 php-fpm 进程管理
/usr/local/php-fpm/etc/php.ini , 注释用;号,用 #号不太对,如;pm = dynamic
动态进程管理,先一开始启动20个进程, 根据需求(访问量)自动生成进程, 服务器闲也会自动销毁,
也可以是static, static只有 pm.max_children有效, start_servers /min_spare_servers /max_spare_servers 都会失效
pm = dynamic //动态进程管理
pm.max_children = 50 //最大子进程数,ps aux可以查看
pm.start_servers = 20 //启动服务时会启动的进程数
pm.min_spare_servers = 5 //定义在空闲时段,子进程数的最少数量,如果达到这个数值时,php-fpm服务会自动派生新的子进程。
pm.max_spare_servers = 35 //定义在空闲时段,子进程数的最大值,如果高于这个数值就开始清理空闲的子进程。
pm.max_requests = 500 //定义一个子进程最多处理的请求数,也就是说在一个php-fpm的子进程最多可以处理这么多请求,当达到这个数值时,它会自动退出。
rlimit_files = 1024 //设置文件打开描述符的rlimit限制. 默认值: 系统定义值 系统默认可打开句柄是1024,可使用 ulimit -n查看,ulimit -n 2048修改。
12.21 php-fpm的pool 12.22 php-fpm慢执行日志 12.23 open_basedir 12.24 php-fpm进程管理
12.21 php-fpm的pool
为了避免因多站点使用同一个pool时因一个站点故障导致pool出问题,进而影响使用同一个pool的其他站点的正常运行,要对每个站点配置一个单独的pool。
为php-fpm增加pool
[root@cham002 cham.com]# cd /usr/local/php-fpm/etc/
[root@cham002 etc]# ls
pear.conf php-fpm.conf php-fpm.conf.default php.ini
[root@cham002 etc]# cat php-fpm.conf
[global]
pid = /usr/local/php-fpm/var/run/php-fpm.pid
error_log = /usr/local/php-fpm/var/log/php-fpm.log
[www]
#listen = /tmp/php-fcgi.sock
listen = 127.0.0.1:9000
listen.mode = 666
user = php-fpm
group = php-fpm
pm = dynamic
pm.max_children = 50
pm.start_servers = 20
pm.min_spare_servers = 5
pm.max_spare_servers = 35
pm.max_requests = 500
rlimit_files = 1024
[root@cham002 etc]# vi !$
vi php-fpm.conf
[champin.com]
#listen = /tmp/champin.sock
listen = 127.0.0.1:9000
listen.mode = 666
user = php-fpm
group = php-fpm
pm = dynamic
pm.max_children = 50
pm.start_servers = 20
pm.min_spare_servers = 5
pm.max_spare_servers = 35
pm.max_requests = 500
rlimit_files = 1024
语法检测:
[root@cham002 etc]# /usr/local/php-fpm/sbin/php-fpm -t
[09-Jan-2018 00:36:35] ERROR: [pool champin.com] unable to set listen address as it''s already used in another pool ''www''
[09-Jan-2018 00:36:35] ERROR: failed to post process the configuration
[09-Jan-2018 00:36:35] ERROR: FPM initialization failed
原因是我以为名字不对,后来换了名字还是不行,仔细看配置文件发现原因
[root@cham002 etc]# /usr/local/php-fpm/sbin/php-fpm -t
[09-Jan-2018 00:45:20] NOTICE: configuration file /usr/local/php-fpm/etc/php-fpm.conf test is successful
[root@cham002 etc]# /etc/init.d/php-fpm reload
Reload service php-fpm done
[root@cham002 etc]# ps aux |grep php-fpm
root 6251 0.5 0.4 227212 4980 ? Ss 00:49 0:00 php-fpm: master process (/usr/local/php-fpm/etc/php-fpm.conf)
php-fpm 6252 0.0 0.4 227152 4712 ? S 00:49 0:00 php-fpm: pool www
php-fpm 6253 0.0 0.4 227152 4712 ? S 00:49 0:00 php-fpm: pool www
php-fpm 6254 0.0 0.4 227152 4712 ? S 00:49 0:00 php-fpm: pool www
php-fpm 6255 0.0 0.4 227152 4712 ? S 00:49 0:00 php-fpm: pool www
php-fpm 6256 0.0 0.4 227152 4716 ? S 00:49 0:00 php-fpm: pool www
php-fpm 6257 0.0 0.4 227152 4716 ? S 00:49 0:00 php-fpm: pool www
php-fpm 6258 0.0 0.4 227152 4716 ? S 00:49 0:00 php-fpm: pool www
php-fpm 6259 0.0 0.4 227152 4720 ? S 00:49 0:00 php-fpm: pool www
php-fpm 6260 0.0 0.4 227152 4720 ? S 00:49 0:00 php-fpm: pool www
php-fpm 6261 0.0 0.4 227152 4720 ? S 00:49 0:00 php-fpm: pool www
php-fpm 6262 0.0 0.4 227152 4720 ? S 00:49 0:00 php-fpm: pool www
php-fpm 6263 0.0 0.4 227152 4720 ? S 00:49 0:00 php-fpm: pool www
php-fpm 6264 0.0 0.4 227152 4720 ? S 00:49 0:00 php-fpm: pool www
php-fpm 6265 0.0 0.4 227152 4720 ? S 00:49 0:00 php-fpm: pool www
php-fpm 6266 0.0 0.4 227152 4720 ? S 00:49 0:00 php-fpm: pool www
php-fpm 6267 0.0 0.4 227152 4720 ? S 00:49 0:00 php-fpm: pool www
php-fpm 6268 0.0 0.4 227152 4720 ? S 00:49 0:00 php-fpm: pool www
php-fpm 6269 0.0 0.4 227152 4720 ? S 00:49 0:00 php-fpm: pool www
php-fpm 6270 0.0 0.4 227152 4720 ? S 00:49 0:00 php-fpm: pool www
php-fpm 6271 0.0 0.4 227152 4720 ? S 00:49 0:00 php-fpm: pool www
php-fpm 6272 0.0 0.4 227152 4716 ? S 00:49 0:00 php-fpm: pool champ
php-fpm 6273 0.0 0.4 227152 4716 ? S 00:49 0:00 php-fpm: pool champ
php-fpm 6274 0.0 0.4 227152 4716 ? S 00:49 0:00 php-fpm: pool champ
php-fpm 6275 0.0 0.4 227152 4720 ? S 00:49 0:00 php-fpm: pool champ
php-fpm 6276 0.0 0.4 227152 4724 ? S 00:49 0:00 php-fpm: pool champ
php-fpm 6277 0.0 0.4 227152 4724 ? S 00:49 0:00 php-fpm: pool champ
php-fpm 6278 0.0 0.4 227152 4724 ? S 00:49 0:00 php-fpm: pool champ
php-fpm 6279 0.0 0.4 227152 4724 ? S 00:49 0:00 php-fpm: pool champ
php-fpm 6280 0.0 0.4 227152 4724 ? S 00:49 0:00 php-fpm: pool champ
php-fpm 6281 0.0 0.4 227152 4724 ? S 00:49 0:00 php-fpm: pool champ
php-fpm 6282 0.0 0.4 227152 4724 ? S 00:49 0:00 php-fpm: pool champ
php-fpm 6283 0.0 0.4 227152 4724 ? S 00:49 0:00 php-fpm: pool champ
php-fpm 6284 0.0 0.4 227152 4724 ? S 00:49 0:00 php-fpm: pool champ
php-fpm 6285 0.0 0.4 227152 4724 ? S 00:49 0:00 php-fpm: pool champ
php-fpm 6286 0.0 0.4 227152 4724 ? S 00:49 0:00 php-fpm: pool champ
php-fpm 6287 0.0 0.4 227152 4724 ? S 00:49 0:00 php-fpm: pool champ
php-fpm 6288 0.0 0.4 227152 4724 ? S 00:49 0:00 php-fpm: pool champ
php-fpm 6289 0.0 0.4 227152 4724 ? S 00:49 0:00 php-fpm: pool champ
php-fpm 6290 0.0 0.4 227152 4724 ? S 00:49 0:00 php-fpm: pool champ
php-fpm 6291 0.0 0.4 227152 4728 ? S 00:49 0:00 php-fpm: pool champ
root 6293 1.0 0.0 112680 976 pts/1 R+ 00:49 0:00 grep --color=auto php-fpm
为站点配置pool
[root@cham002 etc]# cd /usr/local/nginx/conf/vhost/
[root@cham002 vhost]# ls
aaa.com.conf load.conf proxy.conf ssl.conf test.com.conf
[root@cham002 vhost]# vim aaa.com.conf
server
{
listen 80 default_server;
server_name aaa.com;
index index.html index.htm index.php;
root /data/wwwroot/default;
location ~ \.php$
{
include fastcgi_params;
fastcgi_pass unix:/tmp/champ.sock;
#fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /data/wwwroot/default$fastcgi_script_name;
}
}
说明: 把fastcgi_pass地址改为和php-fpm.conf中一样的地址就可以。
添加php-fpm.conf子配置文件
为了便于管理,可以将php-fpm中的每个pool单独进行管理。进行如下操作,添加php-fpm子配置文件:
[root@cham002 vhost]# cd /usr/local/php-fpm/etc/
[root@cham002 etc]# vim php-fpm.conf
[global]
pid = /usr/local/php-fpm/var/run/php-fpm.pid
error_log = /usr/local/php-fpm/var/log/php-fpm.log
include = etc/php-fpm.d/*.conf
说明: 在全局变量版块添加参数“include = etc/php-fpm.d/*.conf”。然后可以清除php-fpm配置文件中其他参数,再到php-fpm.d目录下进行单独设置。
[root@cham002 vhost]# cd /usr/local/php-fpm/etc/
[root@cham002 etc]# mkdir php-fpm.d
[root@cham002 etc]# cd php-fpm.d/
[root@cham002 php-fpm.d]# vim www.conf
[www]
listen = /tmp/php-fcgi.sock
#listen = 127.0.0.1:9000
listen.mode = 666
user = php-fpm
group = php-fpm
pm = dynamic
pm.max_children = 50
pm.start_servers = 20
pm.min_spare_servers = 5
pm.max_spare_servers = 35
pm.max_requests = 500
rlimit_files = 1024
[root@cham002 php-fpm.d]# ls
www.conf
[root@cham002 php-fpm.d]# vim champ.conf
[champ]
listen = /tmp/champ.sock
#listen = 127.0.0.1:9000
listen.mode = 666
user = php-fpm
group = php-fpm
pm = dynamic
pm.max_children = 50
pm.start_servers = 20
pm.min_spare_servers = 5
pm.max_spare_servers = 35
pm.max_requests = 500
rlimit_files = 1024
[root@cham002 php-fpm.d]# ls
champ.conf www.conf
[root@cham002 php-fpm.d]# /usr/local/php-fpm/sbin/php-fpm -t
[09-Jan-2018 01:20:26] NOTICE: configuration file /usr/local/php-fpm/etc/php-fpm.conf test is successful
[root@cham002 php-fpm.d]# /etc/init.d/php-fpm restart
Gracefully shutting down php-fpm . done
Starting php-fpm done
[root@cham002 php-fpm.d]# ps aux |grep php-fpm
root 6508 1.5 0.4 227240 4988 ? Ss 01:26 0:00 php-fpm: master process (/usr/local/php-fpm/etc/php-fpm.conf)
php-fpm 6509 0.0 0.4 227180 4720 ? S 01:26 0:00 php-fpm: pool champ
php-fpm 6510 0.0 0.4 227180 4720 ? S 01:26 0:00 php-fpm: pool champ
php-fpm 6511 0.0 0.4 227180 4720 ? S 01:26 0:00 php-fpm: pool champ
php-fpm 6512 0.0 0.4 227180 4720 ? S 01:26 0:00 php-fpm: pool champ
php-fpm 6513 0.0 0.4 227180 4724 ? S 01:26 0:00 php-fpm: pool champ
php-fpm 6514 0.0 0.4 227180 4724 ? S 01:26 0:00 php-fpm: pool champ
php-fpm 6515 0.0 0.4 227180 4724 ? S 01:26 0:00 php-fpm: pool champ
php-fpm 6516 0.0 0.4 227180 4724 ? S 01:26 0:00 php-fpm: pool champ
php-fpm 6517 0.0 0.4 227180 4724 ? S 01:26 0:00 php-fpm: pool champ
php-fpm 6518 0.0 0.4 227180 4724 ? S 01:26 0:00 php-fpm: pool champ
php-fpm 6519 0.0 0.4 227180 4724 ? S 01:26 0:00 php-fpm: pool champ
php-fpm 6520 0.0 0.4 227180 4724 ? S 01:26 0:00 php-fpm: pool champ
php-fpm 6521 0.0 0.4 227180 4724 ? S 01:26 0:00 php-fpm: pool champ
php-fpm 6522 0.0 0.4 227180 4724 ? S 01:26 0:00 php-fpm: pool champ
php-fpm 6523 0.0 0.4 227180 4724 ? S 01:26 0:00 php-fpm: pool champ
php-fpm 6524 0.0 0.4 227180 4728 ? S 01:26 0:00 php-fpm: pool champ
php-fpm 6525 0.0 0.4 227180 4728 ? S 01:26 0:00 php-fpm: pool champ
php-fpm 6526 0.0 0.4 227180 4728 ? S 01:26 0:00 php-fpm: pool champ
php-fpm 6527 0.0 0.4 227180 4728 ? S 01:26 0:00 php-fpm: pool champ
php-fpm 6528 0.0 0.4 227180 4728 ? S 01:26 0:00 php-fpm: pool champ
php-fpm 6529 0.0 0.4 227180 4724 ? S 01:26 0:00 php-fpm: pool www
php-fpm 6530 0.0 0.4 227180 4724 ? S 01:26 0:00 php-fpm: pool www
php-fpm 6531 0.0 0.4 227180 4724 ? S 01:26 0:00 php-fpm: pool www
php-fpm 6532 0.0 0.4 227180 4724 ? S 01:26 0:00 php-fpm: pool www
php-fpm 6533 0.0 0.4 227180 4728 ? S 01:26 0:00 php-fpm: pool www
php-fpm 6534 0.0 0.4 227180 4728 ? S 01:26 0:00 php-fpm: pool www
php-fpm 6535 0.0 0.4 227180 4728 ? S 01:26 0:00 php-fpm: pool www
php-fpm 6536 0.0 0.4 227180 4728 ? S 01:26 0:00 php-fpm: pool www
php-fpm 6537 0.0 0.4 227180 4728 ? S 01:26 0:00 php-fpm: pool www
php-fpm 6538 0.0 0.4 227180 4728 ? S 01:26 0:00 php-fpm: pool www
php-fpm 6539 0.0 0.4 227180 4728 ? S 01:26 0:00 php-fpm: pool www
php-fpm 6540 0.0 0.4 227180 4732 ? S 01:26 0:00 php-fpm: pool www
php-fpm 6541 0.0 0.4 227180 4732 ? S 01:26 0:00 php-fpm: pool www
php-fpm 6542 0.0 0.4 227180 4732 ? S 01:26 0:00 php-fpm: pool www
php-fpm 6543 0.0 0.4 227180 4732 ? S 01:26 0:00 php-fpm: pool www
php-fpm 6544 0.0 0.4 227180 4732 ? S 01:26 0:00 php-fpm: pool www
php-fpm 6545 0.0 0.4 227180 4732 ? S 01:26 0:00 php-fpm: pool www
php-fpm 6546 0.0 0.4 227180 4732 ? S 01:26 0:00 php-fpm: pool www
php-fpm 6547 0.0 0.4 227180 4732 ? S 01:26 0:00 php-fpm: pool www
php-fpm 6548 0.0 0.4 227180 4732 ? S 01:26 0:00 php-fpm: pool www
root 6550 0.0 0.0 112680 976 pts/1 R+ 01:26 0:00 grep --color=auto php-fpm
配置完成后使用ps查看php-fpm进程信息。
12.22 php-fpm的慢执行日志
开启慢执行日志:
[root@cham002 php-fpm.d]# vim www.conf
[www]
listen = /tmp/php-fcgi.sock
#listen = 127.0.0.1:9000
listen.mode = 666
user = php-fpm
group = php-fpm
pm = dynamic
pm.max_children = 50
pm.start_servers = 20
pm.min_spare_servers = 5
pm.max_spare_servers = 35
pm.max_requests = 500
rlimit_files = 1024
request_slowlog_timeout = 1
#当请求超过1秒开始记录日志
slowlog = /usr/local/php-fpm/var/log/www-slow.log
#日志存放路径
试验
在使用www pool的站点添加文件:
[root@cham002 php-fpm.d]# /usr/local/php-fpm/sbin/php-fpm -t
[09-Jan-2018 01:31:57] NOTICE: configuration file /usr/local/php-fpm/etc/php-fpm.conf test is successful
[root@cham002 php-fpm.d]# /etc/init.d/php-fpm reload
Reload service php-fpm done
[root@cham002 php-fpm.d]# ls /usr/local/php-fpm/var/log/www-slow.log
/usr/local/php-fpm/var/log/www-slow.log
[root@cham002 php-fpm.d]# vim /data/wwwroot/test.com/sleep.php
<?php
echo "test slow log";
sleep(2);
echo "done";
?>
试一下
[root@cham002 php-fpm.d]# curl -x127.0.0.1:80 test.com/sleep.php
<html>
<head><title>502 Bad Gateway</title></head>
<body bgcolor="white">
<center><h1>502 Bad Gateway</h1></center>
<hr><center>nginx/1.12.1</center>
</body>
</html>
[root@cham002 php-fpm.d]# cat /usr/local/nginx/conf/vhost/test.com.conf
server
{
listen 80;
#报502的错误,查看配置文件,发现监听的地址被注重掉了
[root@cham002 php-fpm.d]# cat /usr/local/nginx/conf/vhost/test.com.conf
server
{
listen 80;
server_name test.com test2.com test3.com;
index index.html index.htm index.php;
root /data/wwwroot/test.com;
if ($host != ''test.com'' ) {
rewrite ^/(.*)$ http://test.com/$1 permanent;
}
# location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
# {
# expires 7d;
# access_log off;
# }
location ~* ^.+\.(gif|jpg|png|swf|flv|rar|zip|doc|pdf|gz|bz2|jpeg|bmp|xls)$
{
expires 7d;
valid_referers none blocked server_names *.test.com ;
if ($invalid_referer) {
return 403;
}
access_log off;
}
location ~ .*\.(js|css)$
{
expires 12h;
access_log off;
}
location /admin/
{
allow 127.0.0.1;
allow 192.168.230.135;
deny all;
}
location ~ .*(upload|image)/.*\.php$
{
deny all;
}
if ($http_user_agent ~ ''Spider/3.0|YoudaoBot|Tomato'')
{
return 403;
}
location ~ \.php$
{
include fastcgi_params;
#fastcgi_pass unix:/tmp/php-fcgi.sock;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /data/wwwroot/test.com$fastcgi_script_name;
}
access_log /tmp/test.com.log cham;
}
[root@cham002 php-fpm.d]# /usr/local/nginx/sbin/nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
[root@cham002 php-fpm.d]# /usr/local/nginx/sbin/nginx -s reload
[root@cham002 php-fpm.d]# curl -x127.0.0.1:80 test.com/sleep.php
test slow logdone
Reload service php-fpm done
[root@cham002 php-fpm.d]# cat /usr/local/php-fpm/var/log/www-slow.log
##查看日志!!!!!
[09-Jan-2018 01:50:17] [pool www] pid 6700
script_filename = /data/wwwroot/test.com/sleep.php
[0x00007f98c94b02f8] sleep() /data/wwwroot/test.com/sleep.php:3
日志中表明详细信息
说明:一般会写成2秒,多数php脚本都会超过1秒
12.23 php-fpm中指定open_basedir
当一台服务器跑多个站点时,使用open_basedir限定各个站点所能访问的服务器上的目录的范围。在php-fpm服务中,可以针对每个pool设定open _ basedir。
核心配置参数:
[root@cham002 php-fpm.d]# vim www.conf
[www]
listen = /tmp/php-fcgi.sock
#listen = 127.0.0.1:9000
listen.mode = 666
user = php-fpm
group = php-fpm
pm = dynamic
pm.max_children = 50
pm.start_servers = 20
pm.min_spare_servers = 5
pm.max_spare_servers = 35
pm.max_requests = 500
rlimit_files = 1024
request_slowlog_timeout = 1
slowlog = /usr/local/php-fpm/var/log/www-slow.log
php_admin_value[open_basedir]=/data/wwwroot/test.com:/tmp/
[root@cham002 php-fpm.d]# /etc/init.d/php-fpm restart
Gracefully shutting down php-fpm . done
Starting php-fpm done
[root@cham002 php-fpm.d]# curl -x127.0.0.1:80 test.com/3.php -I
HTTP/1.1 200 OK
Server: nginx/1.12.1
Date: Mon, 08 Jan 2018 18:05:28 GMT
Content-Type: text/html; charset=UTF-8
Connection: keep-alive
X-Powered-By: PHP/5.6.30
[root@cham002 php-fpm.d]# vi /usr/local/php-fpm/etc/php.ini
[root@cham002 php-fpm.d]# grep error_log /usr/local/php-fpm/etc/php.ini
; server-specific log, STDERR, or a location specified by the error_log
; Set maximum length of log_errors. In error_log information about the source is
;error_log = php_errors.log
;error_log = syslog
error_log = /usr/local/php-fpm/var/log/php_errors.log
; OPcache error_log file name. Empty string assumes "stderr".
;opcache.error_log=
[root@cham002 php-fpm.d]# ls /usr/local/php-fpm/var/log/
php-fpm.log www-slow.log
[root@cham002 php-fpm.d]# vim www.conf 故意写错地址
[root@cham002 php-fpm.d]# touch /usr/local/php-fpm/var/log/php_errors.log
[root@cham002 php-fpm.d]# chmod 777 /usr/local/php-fpm/var/log/php_errors.log
[root@cham002 php-fpm.d]# /etc/init.d/php-fpm restart
Gracefully shutting down php-fpm . done
Starting php-fpm done
[root@cham002 php-fpm.d]# curl -x127.0.0.1:80 test.com/3.php
No input file specified.
[root@cham002 php-fpm.d]# curl -x127.0.0.1:80 test.com/3.php -I
HTTP/1.1 404 Not Found
Server: nginx/1.12.1
Date: Mon, 08 Jan 2018 18:17:50 GMT
Content-Type: text/html; charset=UTF-8
Connection: keep-alive
X-Powered-By: PHP/5.6.30
[root@cham002 php-fpm.d]# cat /usr/local/php-fpm/var/log/php_errors.log
[08-Jan-2018 18:17:44 UTC] PHP Warning: Unknown: open_basedir restriction in effect. File(/data/wwwroot/test.com/3.php) is not within the allowed path(s): (/data/wwwroot/etest.com:/tmp/) in Unknown on line 0
[08-Jan-2018 18:17:44 UTC] PHP Warning: Unknown: failed to open stream: Operation not permitted in Unknown on line 0
[08-Jan-2018 18:17:50 UTC] PHP Warning: Unknown: open_basedir restriction in effect. File(/data/wwwroot/test.com/3.php) is not within the allowed path(s): (/data/wwwroot/etest.com:/tmp/) in Unknown on line 0
[08-Jan-2018 18:17:50 UTC] PHP Warning: Unknown: failed to open stream: Operation not permitted in Unknown on line 0
改正之后再来测试
[root@cham002 php-fpm.d]# vim www.conf
[root@cham002 php-fpm.d]# curl -x127.0.0.1:80 test.com/3.php -I
HTTP/1.1 200 OK
Server: nginx/1.12.1
Date: Mon, 08 Jan 2018 18:21:54 GMT
Content-Type: text/html; charset=UTF-8
Connection: keep-alive
X-Powered-By: PHP/5.6.30
12.24 php-fpm进程管理
php-fpm中pool配置参数解析:
[root@cham002 php-fpm.d]# cat www.conf
[www]
listen = /tmp/php-fcgi.sock
#listen = 127.0.0.1:9000
listen.mode = 666
user = php-fpm
group = php-fpm
pm = dynamic
;定义进程启动方式(dynamic表示动态,static表示静态)
;只有此处设置为dynamic,下面的配置才生效
pm.max_children = 50
;最多可启动的子进程数量
pm.start_servers = 20
;设定初始启动的进程数量
pm.min_spare_servers = 5
;表示php-fpm空闲时最少要有几个子进程
pm.max_spare_servers = 35
;表示php-fpm空闲时最多要有几个子进程
pm.max_requests = 500
;表示一个子进程最多可接受多少个请求
rlimit_files = 1024
;表示每个子进程打开的多少个文件句柄
request_slowlog_timeout = 1
;当请求超过1秒开始记录日志
slowlog = /usr/local/php-fpm/var/log/www-slow.log
;日志存放地址
php_admin_value[open_basedir]=/data/wwwroot/test.com:/tmp/
12.21 php-fpm的pool12.22 php-fpm慢执行日志12.23 open_basedir12.24 php-fpm进程管理
12.21 php-fpm的pool
知识点
pool 池子,每一个池子都可以监听不同的sock或者是TCP/IP,nginx如果有多个站点,那么每个站点都能去使用一个独立的pool,这样做的好处是,当其中一个php发生错误了(资源不够),所以就有必要让每一个站点使用独立的pool
例如:php程序编写时发生了错误,就会导致整个php资源耗尽,因为pool只支持57个进程,当进程满的时候,如果再有新的请求,将会发现资源被耗尽,就会反馈用户502
增加pool并指定让那个站点使用
配置方法一:
在php-fpm.conf下直接添加一段
[aming.com]
listen = /tmp/aming.sock
listen.mode = 666
user = php-fpm
group = php-fpm
pm = dynamic
pm.max_children = 50
pm.start_servers = 20
pm.min_spare_servers = 5
pm.max_spare_servers = 35
pm.max_requests = 500
rlimit_files = 1024
配置方法二:
使用类似配置vhost的办法,创建目录,单个文件对单个站点(这样的办法看起来不急干净,便于维护) 创建存放的目录
[root@aminglinux-02 vhost]# cd /usr/local/php-fpm/etc/
[root@aminglinux-02 etc]# mkdir php-fpm.d
[root@aminglinux-02 etc]# ls
pear.conf php-fpm.conf php-fpm.conf.default php-fpm.d php.ini
在php-fpm.conf主配置文件下添加配置,并删除之前的pool的配置;删除前cat一次文件,以便拷贝pool的配置到新的配置文件里
[root@aminglinux-02 etc]# vim php-fpm.conf
include = etc/php-fpm.d/*.conf
在新创建的目录下,创建对应站点的pool
[root@aminglinux-02 php-fpm.d]# pwd
/usr/local/php-fpm/etc/php-fpm.d
[root@aminglinux-02 php-fpm.d]# ls
aming.conf www.conf
配置好以后,检查语法并重启
[root@aminglinux-02 ~]# /usr/local/php-fpm/sbin/php-fpm -t
[root@aminglinux-02 ~]# /etc/init.d/php-fpm reload
Reload service php-fpm done
查看新增的pool是否被使用
[root@aminglinux-02 ~]# ps aux |grep php-fpm
root 2723 0.0 0.2 226700 4960 ? Ss 01:17 0:00 php-fpm: master process (/usr/local/php-fpm/etc/php-fpm.conf)
php-fpm 2724 0.0 0.2 226640 4704 ? S 01:17 0:00 php-fpm: pool www
php-fpm 2725 0.0 0.2 226640 4704 ? S 01:17 0:00 php-fpm: pool www
php-fpm 2726 0.0 0.2 226640 4704 ? S 01:17 0:00 php-fpm: pool www
php-fpm 2727 0.0 0.2 226640 4704 ? S 01:17 0:00 php-fpm: pool www
php-fpm 2728 0.0 0.2 226640 4708 ? S 01:17 0:00 php-fpm: pool www
php-fpm 2729 0.0 0.2 226640 4708 ? S 01:17 0:00 php-fpm: pool www
php-fpm 2730 0.0 0.2 226640 4708 ? S 01:17 0:00 php-fpm: pool www
php-fpm 2731 0.0 0.2 226640 4708 ? S 01:17 0:00 php-fpm: pool www
php-fpm 2732 0.0 0.2 226640 4708 ? S 01:17 0:00 php-fpm: pool www
php-fpm 2733 0.0 0.2 226640 4708 ? S 01:17 0:00 php-fpm: pool www
php-fpm 2734 0.0 0.2 226640 4708 ? S 01:17 0:00 php-fpm: pool www
php-fpm 2735 0.0 0.2 226640 4712 ? S 01:17 0:00 php-fpm: pool www
php-fpm 2736 0.0 0.2 226640 4712 ? S 01:17 0:00 php-fpm: pool www
php-fpm 2737 0.0 0.2 226640 4712 ? S 01:17 0:00 php-fpm: pool www
php-fpm 2738 0.0 0.2 226640 4712 ? S 01:17 0:00 php-fpm: pool www
php-fpm 2739 0.0 0.2 226640 4712 ? S 01:17 0:00 php-fpm: pool www
php-fpm 2740 0.0 0.2 226640 4712 ? S 01:17 0:00 php-fpm: pool www
php-fpm 2741 0.0 0.2 226640 4712 ? S 01:17 0:00 php-fpm: pool www
php-fpm 2742 0.0 0.2 226640 4712 ? S 01:17 0:00 php-fpm: pool www
php-fpm 2743 0.0 0.2 226640 4712 ? S 01:17 0:00 php-fpm: pool www
php-fpm 2744 0.0 0.2 226640 4708 ? S 01:17 0:00 php-fpm: pool aming.com
php-fpm 2745 0.0 0.2 226640 4708 ? S 01:17 0:00 php-fpm: pool aming.com
php-fpm 2746 0.0 0.2 226640 4708 ? S 01:17 0:00 php-fpm: pool aming.com
php-fpm 2747 0.0 0.2 226640 4708 ? S 01:17 0:00 php-fpm: pool aming.com
php-fpm 2748 0.0 0.2 226640 4712 ? S 01:17 0:00 php-fpm: pool aming.com
php-fpm 2749 0.0 0.2 226640 4712 ? S 01:17 0:00 php-fpm: pool aming.com
php-fpm 2750 0.0 0.2 226640 4712 ? S 01:17 0:00 php-fpm: pool aming.com
php-fpm 2751 0.0 0.2 226640 4716 ? S 01:17 0:00 php-fpm: pool aming.com
php-fpm 2752 0.0 0.2 226640 4716 ? S 01:17 0:00 php-fpm: pool aming.com
php-fpm 2753 0.0 0.2 226640 4716 ? S 01:17 0:00 php-fpm: pool aming.com
php-fpm 2754 0.0 0.2 226640 4716 ? S 01:17 0:00 php-fpm: pool aming.com
php-fpm 2755 0.0 0.2 226640 4716 ? S 01:17 0:00 php-fpm: pool aming.com
php-fpm 2756 0.0 0.2 226640 4716 ? S 01:17 0:00 php-fpm: pool aming.com
php-fpm 2757 0.0 0.2 226640 4716 ? S 01:17 0:00 php-fpm: pool aming.com
php-fpm 2758 0.0 0.2 226640 4716 ? S 01:17 0:00 php-fpm: pool aming.com
php-fpm 2759 0.0 0.2 226640 4716 ? S 01:17 0:00 php-fpm: pool aming.com
php-fpm 2760 0.0 0.2 226640 4716 ? S 01:17 0:00 php-fpm: pool aming.com
php-fpm 2761 0.0 0.2 226640 4716 ? S 01:17 0:00 php-fpm: pool aming.com
php-fpm 2762 0.0 0.2 226640 4716 ? S 01:17 0:00 php-fpm: pool aming.com
php-fpm 2763 0.0 0.2 226640 4716 ? S 01:17 0:00 php-fpm: pool aming.com
root 2765 0.0 0.0 112664 976 pts/0 R+ 01:17 0:00 grep --color=auto php-fpm
发现新增了pool 名字为 aming.com
在nginx里启用
配置新的虚拟主机配置文件
[root@aminglinux-02 vhost]# pwd
/usr/local/nginx/conf/vhost
[root@aminglinux-02 vhost]# vim aaa.com.conf
server
{
listen 80 default_server;
server_name aaa.com;
index index.html index.htm index.php;
root /data/wwwroot/default;
location ~ \.php$ //新增解析php 下面这一整段
{
include fastcgi_params;
fastcgi_pass unix:/tmp/aming.sock; //指定新添加的pool里面配置的sock
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /data/wwwroot/default$fastcgi_script_name;
}
}
12.22 php-fpm慢执行日志
做 php 的网站,建议使用lnmp,主要原因就是可以去分析慢执行; 查询办法 1、系统负载,可以通过各种工具查,查出是哪个进程导致 2、PHP网站访问慢,通过慢日志
配置方法:
配置pool文件
[root@aminglinux-02 php-fpm.d]# vim www.conf
[www]
listen = /tmp/php-fcgi.sock
listen.mode = 666
user = php-fpm
group = php-fpm
pm = dynamic
pm.max_children = 50
pm.start_servers = 20
pm.min_spare_servers = 5
pm.max_spare_servers = 35
pm.max_requests = 500
rlimit_files = 1024
request_slowlog_timeout = 1 //新增;超过一秒钟记录一次;一般用2秒比较合适,因为很多脚本都会超过1秒
slowlog = /usr/local/php-fpm/var/log/www-slow.log //新增;日志存放路径
配置完成,检查语法&&重新加载服务
[root@aminglinux-02 php-fpm.d]# /usr/local/php-fpm/sbin/php-fpm -t
[17-Aug-2017 01:48:30] NOTICE: configuration file /usr/local/php-fpm/etc/php-fpm.conf test is successful
[root@aminglinux-02 php-fpm.d]# /etc/init.d/php-fpm reload
Reload service php-fpm don
查看一下是否生成日志文件,是否有内容
[root@aminglinux-02 php-fpm.d]# ls /usr/local/php-fpm/var/log/www-slow.log
/usr/local/php-fpm/var/log/www-slow.log
[root@aminglinux-02 php-fpm.d]# cat !$
cat /usr/local/php-fpm/var/log/www-slow.log
日志文件并没有内容,因为还没有发生超过1秒的php执行的情况
模拟一个慢执行的php
到www pool的所支持的站点下,创建一个慢执行的php
[root@aminglinux-02 test.com]# pwd
/data/wwwroot/test.com
[root@aminglinux-02 test.com]# vim sleep.php
<?php
echo “test slow log”;
sleep(2);
echo “done”;
?>
检查语法&&重新加载服务
[root@aminglinux-02 test.com]# /usr/local/nginx/sbin/nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
[root@aminglinux-02 test.com]# /usr/local/nginx/sbin/nginx -s reload
测试
[root@aminglinux-02 test.com]# curl -x127.0.0.1:80 test.com/sleep.php -I
HTTP/1.1 500 Internal Server Error
Server: nginx/1.12.1
Date: Wed, 16 Aug 2017 17:56:11 GMT
Content-Type: text/html; charset=UTF-8
Connection: keep-alive
X-Powered-By: PHP/5.6.30
提示500 表示有错
打开在浏览器查看错误信息
[root@aminglinux-02 test.com]# vim /usr/local/php-fpm/etc/php.ini
搜索 display_err ,on 这个配置,将能在浏览器上查看错误信息
[root@aminglinux-02 test.com]# curl -x127.0.0.1:80 test.com/sleep.php
<br />
<b>Parse error</b>: syntax error, unexpected ''slow'' (T_STRING), expecting '','' or '';'' in <b>/data/wwwroot/test.com/sleep.php</b> on line <b>2</b><br />
提示:解析错误< / b >:语法错误,意外的“慢”(T_STRING),期望“,”或“;在< b > /数据/ wwwroot /test.com/sleep.php < / b > < b > 2行< / b > 检查sleep.php文件
发现里面的标点用的是中文标点,更改后重启配置
再次测试
[root@aminglinux-02 test.com]# curl -x127.0.0.1:80 test.com/sleep.php
test slow logdone
发现会慢2秒才输出结果
这时候可以去查看是否生成了慢日志
[root@aminglinux-02 test.com]# cat /usr/local/php-fpm/var/log/www-slow.log
[17-Aug-2017 02:07:35] [pool www] pid 3133
script_filename = /data/wwwroot/test.com/sleep.php //提示:是哪个文件慢
[0x00007ff86b542298] sleep() /data/wwwroot/test.com/sleep.php:3 //提示:是文件里的那一行慢
查看相关的文件
[root@aminglinux-02 test.com]# cat sleep.php
<?php
echo "test slow log";
sleep(2); // 这一行因为执行了sleep 2 ,将暂停2秒,就是这个导致慢,所以被日志记录
echo "done";
?>
12.23 open_basedir
知识点
因为如果服务器管理多个网站,在php.ini里定义多个open_basedir就不合适了,所以使用针对pool定义对应的open_basedir
配置open_basedir
对www的pool进行配置,在最末行加多一行配置
[root@aminglinux-02 php-fpm.d]# vim www.conf
php_admin_value[open_basedir]=/data/wwwroot/test.com:/tmp/ 如果路径出错,会导致404页面 curl直接连会提示“No input file specified.”
开启错误日志记录
定义错误日志
;error_log = php_errors.log
; Log errors to syslog (Event Log on Windows).
;error_log = syslog
error_log = /usr/local/php-fpm/var/log/php_errors.log //这一段定义错误日志
定义错误日志的级别
error_reporting = E_ALL //所有
查看刚更改的路径是否存在
[root@aminglinux-02 php-fpm.d]# grep error_log /usr/local/php-fpm/etc/php.ini
; server-specific log, STDERR, or a location specified by the error_log
; Set maximum length of log_errors. In error_log information about the source is
;error_log = php_errors.log
;error_log = syslog
error_log = /usr/local/php-fpm/var/log/php_errors.log
; OPcache error_log file name. Empty string assumes "stderr".
;opcache.error_log=
[root@aminglinux-02 php-fpm.d]# ls /usr/local/php-fpm/var/log/
php-fpm.log www-slow.log
为了保证能正常的写入日志,需要进行以下操作 创建好一个错误日志文件
[root@aminglinux-02 php-fpm.d]# touch /usr/local/php-fpm/var/log/php_errors.log
将它的权限设置为777,以便写入
[root@aminglinux-02 php-fpm.d]# chmod 777 !$
chmod 777 /usr/local/php-fpm/var/log/php_errors.log
[root@aminglinux-02 php-fpm.d]# ls -lhtr /usr/local/php-fpm/var/log/
总用量 16K
-rw------- 1 root root 480 8月 17 02:07 www-slow.log
-rw------- 1 root root 9.1K 8月 17 02:07 php-fpm.log
-rwxrwxrwx 1 root root 0 8月 17 02:30 php_errors.log
12.24 php-fpm进程管理
[root@aminglinux-02 php-fpm.d]# cat www.conf
[www]
listen = /tmp/php-fcgi.sock
listen.mode = 666
user = php-fpm
group = php-fpm
pm = dynamic //表示进程以什么形式启动,dynamic就是动态,动态就是一开始为一个数值,根据需求再自动生成,服务器比较闲的时候还会去销毁,销毁到一定程度还有自动生成
pm.max_children = 50 //最大子进程数,ps aux可以查看
pm.start_servers = 20 //启动服务时会启动的进程数
pm.min_spare_servers = 5 //定义在空闲时段,子进程数的最少数量,如果达到这个数值时,php-fpm服务会自动派生新的子进程。
pm.max_spare_servers = 35 //定义在空闲时段,子进程数的最大值,如果高于这个数值就开始清理空闲的子进程。
pm.max_requests = 500 //定义一个子进程最多处理的请求数,也就是说在一个php-fpm的子进程最多可以处理这么多请求,当达到这个数值时,它会自动退出。
rlimit_files = 1024
request_slowlog_timeout = 1
slowlog = /usr/local/php-fpm/var/log/www-slow.log
php_admin_value[open_basedir]=/data/wwwroot/test.com:/tmp/
pm = dynamic //表示进程以什么形式启动,dynamic就是动态,动态就是一开始为一个数值,根据需求再自动生成,服务器比较闲的时候还会去销毁,销毁到一定程度还有自动生成;根据下面的设置去进行设定“start_servers ”、“min_spare_servers ”、“max_spare_servers ”、“max_requests ”
==pm 还有一个选择是 static ,一旦选择这个设置,下面的pm的各种设置只会有一个max_children生效==
5、PHP-将浮点数转为整数 php 浮点数比较 php 浮点数精度 php 浮点数格式
1、使用强制类型转换
首先PHP支持如下所示的数据类型:
<span>1. </span>Integer (整数) <span>2. </span>Float (浮点数) <span>3. </span>String (字符串) <span>4. </span>Boolean (布尔值) <span>5. </span>Array (数组) <span>6. </span>Object (对象)
此外还有两个特殊的类型:NULL(空)、resource(资源)。
注:
1. 没有被赋值、已经被重置或者被赋值为特殊值NULL的变量就是NULL类型的变量。
2. 特定的内置函数(例如数据库函数)将返回resource类型的变量。
接着可以使用类似C语言的强制类型转换,例如
<span><?php </span><span>$a</span>=<span>6.66666</span>; <span>$b</span>=(integer)<span>$a</span>; <span>echo</span><span>$b</span>;</span>
将输出一个6,直接舍去了小数部分
立即学习“PHP免费学习笔记(深入)”;
2、使用float floor ( float value) 函数
舍去法取整,返回不大于 value 的下一个整数,将 value 的小数部分舍去取整。floor() 返回的类型仍然是 float,因为float 值的范围通常比 integer 要大。
echo <span>floor</span>(<span>4.3</span>); <span>// 输出4 </span> echo <span>floor</span>(<span>9.999</span>); <span>// 输出9</span>
3、使用float ceil ( float value) 函数
进一法取整,返回不小于 value 的下一个整数,value 如果有小数部分则进一位。ceil() 返回的类型仍然是 float,因为float 值的范围通常比 integer 要大。
echo <span>ceil</span>(<span>4.3</span>); <span>// 输出5 </span> echo <span>ceil</span>(<span>9.999</span>); <span>// 输出10</span>
4、使用float round ( float val [, int precision])函数
对浮点数进行四舍五入,返回将 val 根据指定精度 precision(十进制小数点后数字的数目)进行四舍五入的结果。precision 也可以是负数或零(默认值)。
echo <span>round</span>(<span>3.4</span>); <span>// 输出3 </span> echo <span>round</span>(<span>3.5</span>); <span>// 输出4 </span> echo <span>round</span>(<span>3.6</span>); <span>// 输出4 </span> echo <span>round</span>(<span>3.6</span>, <span>0</span>); <span>// 输出4 </span> echo <span>round</span>(<span>1.95583</span>, <span>2</span>); <span>// 输出1.96 </span> echo <span>round</span>(<span>1241757</span>, -<span>3</span>); <span>// 输出1242000 </span> echo <span>round</span>(<span>5.045</span>, <span>2</span>); <span>// 输出5.04 </span> echo <span>round</span>(<span>5.055</span>, <span>2</span>); <span>// 输出5.06</span>
以上就介绍了5、PHP-将浮点数转为整数,包括了php,浮点数方面的内容,希望对PHP教程有兴趣的朋友有所帮助。
关于php – 当有人发布内容时,Facebook如何更新内容和facebook怎么更新的介绍现已完结,谢谢您的耐心阅读,如果想了解更多关于12.21 php-fpm 的 pool 12.22 php-fpm 慢执行日志 12.23 open_basedir 12.24 php-fpm 进程管理、12.21 php-fpm的pool 12.22 php-fpm慢执行日志 12.23 open_basedir 12.24 php-fpm进程管理、12.21 php-fpm的pool12.22 php-fpm慢执行日志12.23 open_basedir12.24 php-fpm进程管理、5、PHP-将浮点数转为整数 php 浮点数比较 php 浮点数精度 php 浮点数格式的相关知识,请在本站寻找。
本文标签: