一切福田,不離方寸,從心而覓,感無不通。

Category Archives: PHP

变量的变量

 

龙生   01 Mar 2018
View Details

php Notice: Undefined index: HTTP_REFERER解决方法

首先来说一下为什么使用$_SERVER['HTTP_REFERER']会出现这个报错的原因。 我们大家都知道$_SERVER['HTTP_REFERER']用来获取当前页面的上一个页面地址,只有上一个页面存在,$_SERVER['HTTP_REFERER']才会被设置,如果没有上一个页面(比如用户直接在浏览器上输入当前页面地址打开页面,这时候就没有上一个页面了),$_SERVER['HTTP_REFERER']变量不会被设置。所以在使用这个变量时会报错。   解决办法: 1、关闭掉 NOTICE错误的警告

  2、使用isset判断变量是否存在或设置

  3、在变量前面加上@

  小编在这里推荐大家使用第二种方法,因为第二种方法是从根本上解决了问题,第一种和第三种只是不让错误输出在浏览器上。   from:http://www.manongjc.com/article/1114.html

龙生   01 Mar 2018
View Details

类型转换操作符

array    转换为数组 bool或boolean   转换为布尔值 int或integer    转换为整数 object    转换为对象 real或double或float    转换为浮点数 string    转换为字符串 ——————————————————- gettype(mixed var)    获取类型 有8个可能的返回值:array, boolean, double, integer, object, resource, string, unknow type   settype(mixed var, string type)  转换类型 有7个值可取:array, boolean, float, integer, null, object, string ——————————————————-- 用于检测类型的几个函数,顾名思义,就不再解释作用了: is_array() is_bool() is_float() is_integer() is_null() is_numeric() is_object() is_resource() is_scalar() is_string()  

龙生   28 Feb 2018
View Details

PHP数据类型

布尔型 整型 浮点型,也称为双精度数或实数 字符串 复合数据类型 数组 对象

龙生   28 Feb 2018
View Details

printf类型指示符

%b    将参数认为是一个整数,显示为二进制数 %c    将参数认为是一个整数,显示为对应的ASCII字符 %d    将参数认为是一个整数,显示为有符号十进制数 %f    将参数认为是一个浮点数,显示为浮点数 ps:可以用%.2f来控制小数为2位 %o    将参数认为是一个整数,显示为八进制数 %s    将参数认为是一个字符串,显示为字符串 %u    将参数认为是一个整数,显示为无符号十进制数 %x    将参数认为是一个整数,显示为小写的十六进制数 %X    将参数认为是一个整数,显示为大小的十六进制数

龙生   28 Feb 2018
View Details

NGINX下PHP-FPM占用内存状态及进程数调整

网站出现500,查看SLOWLOG日志发现如下提示: WARNING: [pool www] seems busy (you may need to increase pm.start_servers, or pm.min/max_spare_servers), spawning 32 children, there are 8 idle, and 58 total children WARNING: [pool www] server reached pm.max_children setting (50), consider raising it 昨天晚上刚改的看来又不够用了! 查看PHP-FPM内存占用的几个有用小命令,记录如下: 1.查看每个FPM的内存占用: ps -ylC php-fpm --sort:rss 当然,在后后面加 | wc -l可查看系统当前FPM总进程数,我的目前在45个左右。 PHP官方的建议设置值: pm.max_children = Total RAM dedicated to the web server / Max child process size 2.查看FPM在你的机子上的平均内存占用: [python] view plain copy ps --no-headers -o "rss,cmd" -C php-fpm | awk '{ sum+=$1 } END { printf ("%d%s\n", sum/NR/1024,"M") }'   from:http://blog.csdn.net/solmyr_biti/article/details/50525021

龙生   19 Jan 2018
View Details

PHP+FPM导致内存耗光的问题

转自:http://blog.csdn.net/zouyongjin/article/details/6642157 nginxphp-fpm配置过程中最大问题是内泄漏出问题:服务器的负载不大,但是内存占用迅速增加,很快吃掉内存接着开始吃交换分区,系统很快挂掉! google了一天,终于发现些有用的东西,其实根据官方的介绍,php-cgi不存在内存泄漏,每个请求完成后php-cgi会回收内存,但是不会释放给操作系统,这样就会导致大量内存被php-cgi占用。 官方的解决办法是降低PHP_FCGI_MAX_REQUESTS的值,我用的是php-fpm,对应的php-fpm.conf中的就是max_requests,该值的意思是发送多少个请求后会重启该线程,我们需要适当降低这个值,用以让php-fpm自动的释放内存,不是大部分网上说的51200等等,实际上还有另一个跟它有关联的值max_children,这个是每次php-fpm会建立多少个进程,这样实际上的内存消耗是max_children*max_requests*每个请求使用内存,根据这个我们可以预估一下内存的使用情况,就不用再写脚本去kill了。 下面其实是重启脚本的过程,并不是什么很严重的事情,但是我们要小心,不是说一直重启就是好的,因为重启会导致cpu的使用率飙升,系统负载巨大,所以还是平衡上面的数据比较重要。 其他解决办法: 1.检查php进程的内存占用,杀掉内存使用超额的进程 一般情况下,如果php-cgi进程占用超过1%的内存,就得考虑一下是否要杀掉它了。因为普通情况下,php-cgi进程一般占用0.2%或以下。 这里提供一个脚本供各位使用,就是放在cron任务里,每分钟执行一次。 使用crontab -e 命令,然后添加如下调度任务 * * * * * /bin/bash /usr/local/script/kill_php_cgi.sh kill_php_cgi.sh脚本如下 #!/bin/sh # This script is used to kill php-cgi process that takes large memory size # If a php-cgi process uses 1% or more memory, then it will be killed. PIDS=ps aux|grep php-cgi|grep -v grep|awk '{if($4>=1)print $2}' for PID in $PIDS do #echo date +%F….%T >> /usr/local/php/logs/phpkill.log #echo $PID >> /usr/local/php/logs/phpkill.log kill -9  $PID done 顺便检查PHP-FPM参数 一般来说,如果设置不当,可能导致fpm出现[WARNING] fpm_children_bury(), line 215: child 20883 (pool default) exited on signal 11 SIGSEGV 之类的错误。 […]

龙生   19 Jan 2018
View Details

php-fpm优化方法详解

php-fpm优化方法 php-fpm存在两种方式,一种是直接开启指定数量的php-fpm进程,不再增加或者减少; 另一种则是开始时开启一定数量的php-fpm进程,当请求量变大时,动态的增加php-fpm进程数到上限,当空闲时自动释放空闲的进程数到一个下限。 这两种不同的执行方式,可以根据服务器的实际需求来进行调整。 要用到的一些参数,分别是pm、pm.max_children、pm.start_servers、pm.min_spare_servers和pm.max_spare_servers。 pm表示使用那种方式,有两个值可以选择,就是static(静态)或者dynamic(动态)。 下面4个参数的意思分别为: pm.max_children:静态方式下开启的php-fpm进程数量,在动态方式下他限定php-fpm的最大进程数(这里要注意pm.max_spare_servers的值只能小于等于pm.max_children) pm.start_servers:动态方式下的起始php-fpm进程数量。 pm.min_spare_servers:动态方式空闲状态下的最小php-fpm进程数量。 pm.max_spare_servers:动态方式空闲状态下的最大php-fpm进程数量。 如果dm设置为static,那么其实只有pm.max_children这个参数生效。系统会开启设置的数量个php-fpm进程。 如果dm设置为dynamic,4个参数都生效。系统会在php-fpm运行开始时启动pm.start_servers个php-fpm进程,然后根据系统的需求动态在pm.min_spare_servers和pm.max_spare_servers之间调整php-fpm进程数。 那么,对于服务器,选择哪种执行方式比较好呢?事实上,跟Apache一样,运行的PHP程序在执行完成后,或多或少会有内存泄露的问题。这也是为什么开始时一个php-fpm进程只占用3M左右内存,运行一段时间后就会上升到20-30M的原因了。(www. 脚本学堂) 所以,动态方式因为会结束掉多余的进程,可以回收释放一些内存,所以推荐在内存较少的服务器或者VPS上使用。具体最大数量根据 内存/20M 得到。 比如说512M的VPS,建议pm.max_spare_servers设置为20(512*0.8/20)。至于pm.min_spare_servers,则建议根据服务器的负载情况来设置,比较合适的值在5~10之间。 然后对于比较大内存的服务器来说,设置为静态的话会提高效率。 因为频繁开关php-fpm进程也会有时滞,所以内存够大的情况下开静态效果会更好。数量也可以根据 内存/30M 得到。 比如说2GB内存的服务器,可以设置为50;4GB内存可以设置为100等。 比如,如果是512M的vps,设置的参数如下: 代码示例: pm=dynamic pm.max_children=20 pm.start_servers=5 pm.min_spare_servers=5 pm.max_spare_servers=20 可以最大的节省内存并提高执行效率。   from:https://www.cnblogs.com/feng18/p/6224638.html

龙生   19 Jan 2018
View Details

CentOS上PHP完全卸载

想把PHP卸载干净,直接用yum的remove命令是不行的,需要查看有多少rpm包,然后按照依赖顺序逐一卸载。   1.首先查看机器上安装的所有php相关的rpm包 [root@localhost nginx]# rpm -qa | grep php php-cli-5.3.3-22.el6.x86_64 php-pdo-5.3.3-22.el6.x86_64 php-gd-5.3.3-22.el6.x86_64 php-fpm-5.3.3-22.el6.x86_64 php-common-5.3.3-22.el6.x86_64 php-5.3.3-22.el6.x86_64 php-xml-5.3.3-22.el6.x86_64 php-pear-1.9.4-4.el6.noarch     2.按依赖顺序进行删除 rpm -e php-fpm-5.3.3-22.el6.x86_64 rpm-e php-pdo-5.3.3-22.el6.x86_64 rpm -e php-pear-1.9.4-4.el6.noarch rpm-e php-cli-5.3.3-22.el6.x86_64 rpm -e php-5.3.3-22.el6.x86_64 rpm-e php-xml-5.3.3-22.el6.x86_64 rpm -e php-gd-5.3.3-22.el6.x86_64 rpm-e php-common-5.3.3-22.el6.x86_64   from:http://blog.csdn.net/dc_726/article/details/9519293

龙生   13 Jan 2018
View Details
1 10 11 12 29