针对PHP的session为什么未附值判断是否为空出现警告解决方案和phpsession存在哪里这两个问题,本篇文章进行了详细的解答,同时本文还将给你拓展12.21php-fpm的pool12.22p
针对PHP 的session 为什么未附值判断是否为空出现警告解决方案和php session存在哪里这两个问题,本篇文章进行了详细的解答,同时本文还将给你拓展12.21 php-fpm的pool 12.22 php-fpm慢执行日志 12.23 open_basedir 12.24 php-fpm进程管理、5、PHP-将浮点数转为整数 php 浮点数比较 php 浮点数精度 php 浮点数格式、Brew 安装 php,但“php -v”返回 MacOS 原生 php 的信息、centos5.2用memcache 来作PHP 的session.save等相关知识,希望可以帮助到你。
本文目录一览:- PHP 的session 为什么未附值判断是否为空出现警告解决方案(php session存在哪里)
- 12.21 php-fpm的pool 12.22 php-fpm慢执行日志 12.23 open_basedir 12.24 php-fpm进程管理
- 5、PHP-将浮点数转为整数 php 浮点数比较 php 浮点数精度 php 浮点数格式
- Brew 安装 php,但“php -v”返回 MacOS 原生 php 的信息
- centos5.2用memcache 来作PHP 的session.save
PHP 的session 为什么未附值判断是否为空出现警告解决方案(php session存在哪里)
PHP 的session 为什么未附值判断是否为空出现警告
SESSION_START();
if($_SESSION[''aa'']==NULL){
echo "空";
}else{
echo "非空";
}
这样判断 是否可行的呢? 要附初始值吗? 但是我跳转到别的页面再回来的话附初始值就会被清空的了,请问有什么方法解决?
------解决方案--------------------
判断请用 isset 或者 empty
具体你是想判断这个变量是否存在还是判断内容是否为空?
跳转到别的页面再回来会清空?贴所有代码
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/
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教程有兴趣的朋友有所帮助。
Brew 安装 php,但“php -v”返回 MacOS 原生 php 的信息
删除系统二进制文件通常不是一个好主意。相反,您可以在 ~/.zshrc
文件中添加别名。在文件末尾添加:
alias php="/usr/local/bin/php"
,
解决方案是将其放入 ~/.bash-profile
export PATH=/usr/local/bin:$PATH
重启电脑,它准备好了,现在当我php -v
PHP 8.0.3 (cli) (built: Mar 4 2021 20:45:17) ( NTS )
Copyright (c) The PHP Group
Zend Engine v4.0.3,Copyright (c) Zend Technologies
with Zend OPcache v8.0.3,Copyright (c),by Zend Technologies
centos5.2用memcache 来作PHP 的session.save
最近我的网站访问在直线上升,因为动态会员游戏网站,一直在想办法做些优化,今天想到如果把php的session放在内存,可能会提升网站的访问速度。于是开始搜索资料。经过一天的摸索,终于搞定。问题主要出在php有两个memcache模块,一个是php-memcache,一个是p
最近我的网站访问在直线上升,因为动态会员游戏网站,一直在想办法做些优化,今天想到如果把php的session放在内存,可能会提升网站的访问速度。于是开始搜索资料。经过一天的摸索,终于搞定。问题主要出在php有两个memcache模块,一个是php-memcache,一个是php-memcached,php-memcached是最新的,也是比较稳定的,网上的资料都是关于php-memcache的,而没有提到php-memcached,而php-memcached的配置跟php-memcache是有所不同的。大致的整个安装过程:
1、安装libevent 1.4.10
wget http://monkey.org/~provos/libevent-1.4.10-stable.tar.gz
tar xzvf libevent-1.4.9-stable.tar.gz
cd libevent-1.4.10-stable
./configure --prefix=/usr
make && make install
立即学习“PHP免费学习笔记(深入)”;
2、安装memcached1.2.8
wget http://memcached.googlecode.com/files/memcached-1.2.8.tar.gz
tar -zxvf memcached-1.2.8.tar.gz
cd memcached-1.2.8
./configure --with-libevent=/usr
make && make install
3、安装zlib
wget http://www.zlib.net/zlib-1.2.3.tar.gz
tar -zxvf zlib-1.2.3.tar.gz
cd zlib-1.2.3
./configure --prefix=/usr --shared
make && make install
4、安装libmemcached
wget http://download.tangent.org/libmemcached-0.26.tar.gz
tar zxvf libmemcached-0.26.tar.gz
cd libmemcached-0.26
./configure --prefix=/usr/local/libmemcached/
make && make install
5、安装php-memcached模块
wget http://pecl.php.net/get/memcached
tar -zxvf memcached-0.1.5.tgz
cd memcached-0.1.5
phpize
./configure --with-php-config=/usr/bin/php-config --enable-memcache --with-libmemcached-dir=/usr/local/libmemcached
make && make install
6、启动memcached
/usr/local/bin/memcached -p 11211 -l 127.0.0.1 -d
执行后,可以用以下办法查看执行状态
telnet 127.0.0.1 11211
stats
STAT pid 11568
STAT uptime 5910
STAT time 1241876672
STAT version 1.2.8
STAT pointer_size 32
STAT rusage_user 0.751885
STAT rusage_system 1.584759
STAT curr_items 2615
STAT total_items 36753
STAT bytes 244835
STAT curr_connections 3
STAT total_connections 18427
STAT connection_structures 36
STAT cmd_flush 0
STAT cmd_get 18388
STAT cmd_set 38334
STAT get_hits 15717
STAT get_misses 2671
STAT evictions 0
STAT bytes_read 4924864
STAT bytes_written 1992526
STAT limit_maxbytes 134217728
STAT threads 2
STAT accepting_conns 1
STAT listen_disabled_num 0
END
有以上信息出现,表明启动成功!
7、加入开机启动
nano /etc/rc.d/local.d
加一行
/usr/local/bin/memcached -p 11211 -l 127.0.0.1 -d
8、编辑php.ini
nano /etc/php.ini
在文件最后加入:
extension = "memcached.so"
修改
session.save_handler = files -> session.save_handler = memcached
session.save_path = "/var/lib/php/session" -> session.save_path = "127.0.0.1:11211"
9、重启apache
service httpd restart
大功告成!
需要注意的地方主要有2点,
1、安装libmemcached需用到zlib,我机器没有这个,花了很多时间找编译libmemcached时出错的原因。
2、php.ini文件的配置,php-memcached模块跟php-memcache不同,要设成是memcached,这个在phpinfo页面的Registered save handlers可以看到。如果设置不正确,会有"Cannot find save handler memcache"的错误提示。
3、session.save_path几乎所有的资料都是session.save_path = "tcp://127.0.0.1:11211",但这可能在memcaceh是这样用的,我没有验证,我一开始也是这样设置,但一直出现"Failed to write session data (memcached)"的错误,找了很入也没找到是什么原因,后来在php.net上找到
Defines a comma separated of hostname:port entries to use for session server pool, for example "sess1:11211, sess2:11211".
这段说明,于是去掉tcp://再试,才终于成功!
最后:因为网站一直在运行的,建议不要直接动php.ini,
直接用一个php文件来测试
ini_set("session.save_handler","memcached");
ini_set("session.save_path","127.0.0.1:11211");
session_start();
if (!isset($_SESSION[''TEST''])) {
$_SESSION[''TEST''] = time();
}
$_SESSION[''TEST3''] = time();
print $_SESSION[''TEST''];
print "
";
print $_SESSION[''TEST3''];
print "
";
print session_id();
?>
只要这个文件没有出现错误提示了,就可以直接修改php.ini相应的内容,然后重启apache,就样就不影响会员访问网站。
我们今天的关于PHP 的session 为什么未附值判断是否为空出现警告解决方案和php session存在哪里的分享就到这里,谢谢您的阅读,如果想了解更多关于12.21 php-fpm的pool 12.22 php-fpm慢执行日志 12.23 open_basedir 12.24 php-fpm进程管理、5、PHP-将浮点数转为整数 php 浮点数比较 php 浮点数精度 php 浮点数格式、Brew 安装 php,但“php -v”返回 MacOS 原生 php 的信息、centos5.2用memcache 来作PHP 的session.save的相关信息,可以在本站进行搜索。
本文标签: