当前位置:首页 > 包含标签 PHP 的所有文章
PHP报错”Allowed memory size of 134217728 bytes exhausted“的解决方法

问题描述

PHP开启错误输出后,PHP报错提示如下

Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 131072 bytes) in xxxx.php on line xxx

Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 1099 bytes) in


问题分析

这个是由于可用内存已耗尽,所以终端报出了Allowed memory size of 134217728 bytes exhausted错误,因为PHP默认内存限制是128M,所以需要修改php.ini文件的memory_limit设置。

问题描述

PHP调试的时候出现了警告:It is not safe to rely on the system解决方法,其实就是时区设置不正确造成的,本文提供了3种方法来解决这个问题。

Warning: date(): It is not safe to rely on the system’s timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected ‘Asia/Chongqing’ for ‘CST/8.0/no DST’ instead Warning: strtotime(): It is not safe to rely on the system’s timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected ‘Asia/Chongqing’ for ‘CST/8.0/no DST’ instead Warning: date_default_timezone_get(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'Asia/Chongqing' for 'CST/8.0/no DST' instead in <b>/home/ftp/n/nimaboke/include/lib/function.base.php


问题分析

PHP函数password_hash

Password Hashing函数在 PHP 5.5 时被引入,这边主要讲讲password_hash加密函数、password_verify验证函数以及和md5加密的区别。


password_hash加密

password_hash() 使用足够强度的单向散列算法创建密码的散列(hash)。

password_hash(string $password, mixed $algo, array $options = ?): string|false

有3个参数:密码(必须),哈希算法(必须),选项(选填)

$pwd = '123456'; $hash = password_hash($pwd, PASSWORD_DEFAULT); echo $hash;

输出hash字符串:$2y$10$H7KD.QWJyY68zeKJXTHoW.zH9ZC69zlXALRBtN8BfiKQkk9YolQum

并不是唯一的hash字符串,通过刷新网页,可以输出不同的hash,也就是1个密码会出现不同的hash加密字符串。


password_verify验证

password_verify()验证密码是否和指定的散列值匹配。

password_verify(string $password, string $hash): bool

有2个参数:密码(必须),哈希值(必须)

$pwd = '123456'; $hash = '$2y$10$H7KD.QWJyY68zeKJXTHoW.zH9ZC69zlXALRBtN8BfiKQkk9YolQum'; $result = password_verify($pwd,$hash); var_dump($result); 输出bool(true)


MD5加密

使用《RSA 数据安全公司的 MD5 消息摘要算法》计算 string 的 MD5 散列值,并返回该散列值

md5(string $string, bool $binary = false): string

由于此函数依赖的算法已不足够复杂,不推荐使用此函数对明文密码加密。所以一般使用md5(password+salt)来计算md5值。

$pwd = '123456'; $md5 = md5($pwd); echo $md5;

输出md5字符串:e10adc3949ba59abbe56e057f20f883e

多次刷新网页保持这个字符串不变,由于网上直接加密的可以直接通过字典输出原始密码,导致非常不安全。

$pwd = '123456'; $salt = '77bx'; $md5 = md5($pwd.$salt); echo $md5; 输出md5字符串:caef045fe88f8efa2cf0b85cb91bad4d


加密性能测试

对比md5加密、md5+salt加密、password_hash加密和password_verify验证性能。

本次测试采用虚拟化

CPU:Intel Xeon Gold 6161 2.2GHz 2核4线程

内存:16GB

PHP:7.4

重复计算10次,取平均值得出以下截图结果

结论:

1、不建议使用password_hash和password_verify进行加密和验证,毕竟和md5+salt也有5万倍以上的性能差距。

2、建议使用md5+盐值的方式,毕竟1ms以下的时间对于性能来说影响不大。

3、安全性虽然password_hash比较安全,但是md5+salt的方式也是相对比较安全的。

冒泡排序算法是一个经典的常用排序算法,当然还有一些其他的常用排序算,比如选择排序,插入排序,希尔排序,快速排序。所以也是一种必学的算法,甚至很多公司面试的题目中也有冒泡排序的。

但是冒泡排序毕竟是一种效率低下的排序方法,在数据规模很小时,可以采用。数据规模比较大时,最好用其它排序方法。


冒泡排序(BubbleSort)的基本概念是:依次比较相邻的两个数,将小数放在前面,大数放在后面,直到达到升序排列。

比如:这个数组array(4,3,5,1,2)用冒泡排序算法进行升序排列。

第1个循环循环开始,当前排序:4,3,5,1,2

1、floor() 函数向下舍入为最接近的整数

<?php echo floor(5.1); //输出5 echo floor(-5.1); //输出-6 echo floor(5.9); //输出5 echo floor(-5.9); //输出-6 ?>


2、ceil() 函数向上舍入为最接近的整数

<?php echo ceil(5.1); //输出6 echo ceil(-5.1); //输出-5 echo ceil(5.9); //输出6 echo ceil(-5.9); //输出-5 ?>

七牛镜像存储插件for zblog

七牛云存储支持绑定域名(需要备案域名),全网 CDN 加速(多数据中心+多加速节点,上传下载均加速)、持续在线,可以无限扩展、用户只需按需付费,无硬件投资,并且还有免费套餐的,每个月 10G 流量,总空间 10GB。

七牛的传统 CDN 的镜像存储,这个功能是七牛最强悍的地方,因为对于很多站点来说,有了这个功能,就无需将原来的图片上传到七牛的服务器上,只需在自己站点做些简单的修改,就可以使用七牛的 CDN 服务了,真正显示一键实现博客静态文件 CDN 加速。

七牛镜像存储 zblog php插件,这个插件是最近看了一下七牛和zblog后制作的,发现只有官方开发人员发布的那个集成到ueditor中去的七牛云存储插件,使用手动上传文件,通过服务器上传到七牛云储存。

使用PHP生成二维码(PHP QR Code二维码生成类库)

以前使用Google提供了较为完善的二维码生成接口,调用API接口很简单,但是现在由于访问google出现问题,需要使用其他的方法生成二维码。


PHP QR Code是一个PHP二维码生成类库,利用它可以轻松生成二维码,官网提供了下载和多个演示demo,

官网地址:http://phpqrcode.sourceforge.net


使用方法

下载官网提供的类库后,只需要使用phpqrcode.php就可以生成二维码了,当然您的PHP环境必须开启支持GD2。

phpqrcode.php提供了一个关键的png()方法。