php-fpm 进程优化 pm.start_servers 设置多少最优

细心的朋友在查看php-php日志的时候会发现有时会出现下面的警告:

该信息是建议增加pm.start_servers数量,请注意下上面红色标注的[pool www], 不同配置可能这里会有差异,在具体修改的找到对应pool的配置文件即可;
首先找到所安装php-fpm的配置文件存放路径(注意:不同版本的php-fpm配置文件路径可能有细微的差别),我们可以通过phpinfo()打印查看。

上面是[pool www]配置文件中PM相关配置信息,下面简单说明下这几个参数的用途:

pm.max_children有两个作用:
  1. 指定在static模式下创建的子进程数;
  2. dynamic模式下同一时刻允许最大的php-fpm子进程数量;

一般php-fpm进程占用20~30m左右的内存就按30m算。如果单独跑php-fpm,动态方式起始值可设置物理内存Mem/30M,由于大家一般Nginx、MySQL都在一台机器上,于是预留一半给它们,即php-fpm进程数为$Mem/2/30。

更改后的[POOL WWW] PM配置信息:

保存后记得重启PHP-FPM让配置文件生效即可。

在PHP中发送原生 HTTP header头

通过header content-type设置页面编码为utf-8:

通过header location设置页面跳转:

页面缓存设置:

 

PHP删除数组中指定的元素

删除数组元素有不同的方法,可以根据具体的需要选择不同的方法。

1.unset() 方法

注意:当您使用unset()方法时,数组Key值不会更改。 如果要重新编号键,您可以在unset()之后使用array_values(),它将所有键转换为从0开始的数值枚举键。

输出

2.array_splice() 方法

继续阅读“PHP删除数组中指定的元素”

PHP获取数组最后一个元素

一个解决方案是使用end和key的组合:

end()将数组的内部指针提升到最后一个元素,并返回其值。
key()返回当前数组位置的索引元素。
所以,这样的代码的一部分应该做的诀窍:

输出:

另一种更简单的获取最后一个元素的方法:

 

PHP中捕获var_dump的结果赋值给字符串

php文档中对缓冲区有这样的描述:

As with anything that outputs its result directly to the browser, the output-control functions can be used to capture the output of this function, and save it in a string

那我们是不是能利用这一点将var_dump的结果捕获且赋值给某变量呢?

测试代码:

 

如何在PHP防止数据库SQL注入

SQl注入的危害非常的大,下面这个示例就是一个典型的注入点,代码未对用户所提交的数据进行合法性检查。

用户可通过提交类似 value'); DROP TABLE table;-- 这样的代码,运行时将执行下面的非法代码

对数据安全性以及有效性破坏非常的大,在开发过程中一定要对用户提交信息进行合法性检查,针对PDO和MySQLi两种不同的数据库连接方式有如下两种处理办法。 继续阅读“如何在PHP防止数据库SQL注入”