hi,你好!欢迎访问本站!登录
本站由简数采集腾讯云宝塔系统阿里云强势驱动
当前位置:首页 - PHP问题 - 正文 请牢记本站网址www.sosophp.cn

php什么情况内存泄漏【php题目】

2019-11-26PHP问题搜搜PHP网53°c
A+ A-

状况一、顺序操纵数据过大

情形复原:一次性读取凌驾php可用内存上限的数据致使内存耗尽

<?php
ini_set('memory_limit', '128M');
$string = str_pad('1', 128 * 1024 * 1024);

处理办法:

1、能用钱处理的题目都不是题目,假如顺序要读大文件的时机不是许多,且上限可预期,那末经由过程 ini_set('memory_limit', '1G'); 来设置一个更大的值或许 memory_limit=-1。内存管够的话让顺序一向跑也能够。

2、假如顺序须要斟酌在小内存机械上也能一般运用,那就须要优化顺序了。以下,代码庞杂了许多。

<?php
 //php7 以下版本经由过程 composer 引入 paragonie/random_compat ,为了轻易来生成一个随机称号的临时文件 
require "vendor/autoload.php";
 ini_set('memory_limit', '128M'); 
//生成临时文件寄存大字符串 
$fileName = 'tmp'.bin2hex(random_bytes(5)).'.txt'; touch($fileName);

for ( $i = 0; $i < 128; $i++ ) {    
    $string = str_pad('1', 1 * 1024 * 1024);
    file_put_contents($fileName, $string, FILE_APPEND); 
} 
$handle = fopen($fileName, "r"); 
for ( $i = 0; $i <= filesize($fileName) / 1 * 1024 * 1024; $i++ ) {   //do something   
    $string = fread($handle, 1 * 1024 * 1024); 
} 
fclose($handle); 
unlink($fileName);

状况二顺序操纵大数据时发生拷贝

情形复原:实行过程当中对大变量进行了复制,致使内存不够用。

<?php 
ini_set("memory_limit",'1M'); 
$string = str_pad('1', 1* 750 *1024); 
$string2 = $string; 
$string2 .= '1';

处理办法:

尽早开释无用变量,或许以援用的情势操纵原始数据。

<?php 
ini_set("memory_limit",'1M'); 
$string = str_pad('1', 1* 750 *1024); 
$string2 = $string; 
unset($string); 
$string2 .= '1';

状况三、设置不合理系统资本耗尽

情形复原:因设置不合理致使内存不够用,2G 内存机械上设置最大能够启动 100 个 php-fpm 子历程,但现实启动了 50 个 php-fpm 子历程后没法再启动更多历程。

处理办法:

合理设置 post_max_size、max_file_uploads、upload_max_filesize、max_input_vars、max_input_nesting_level 等参数并调优 php-fpm 相干参数。

状况四、无用的数据未实时开释

情形复原:这类题目从顺序逻辑上不是题目,然则无用的数据大批占用内存致使资本不够用,应该有针对性的做代码优化。

Laravel开辟中用于监听数据库操纵时有以下代码:

DB::listen(function ($query) {            
// query−>sql//query−>sql//query->bindings            
// $query->time        });

处理办法:

本例中要经由过程DB::listen要领猎取一切实行的 SQL 语句纪录并写入日记,但此要领存在内存泄漏题目,在开辟环境下无所谓,在生产环境下则应停用,改用其他门路猎取实行的 SQL 语句并写日记。

引荐教程;PHP视频教程

以上就是php什么状况内存泄漏的细致内容,更多请关注ki4网别的相干文章!

  选择打赏方式
微信赞助

打赏

QQ钱包

打赏

支付宝赞助

打赏

  选择分享方式
  移步手机端
php什么情况内存泄漏【php题目】

1、打开你手机的二维码扫描APP
2、扫描左则的二维码
3、点击扫描获得的网址
4、可以在手机端阅读此文章
标签:
推荐阅读