PHP获得内存使用状态memory_get_usage()函数

 更新时间:2016年11月25日 17:08  点击:1452
在php中为你提供memory_get_usage函数,可以检查到你服务器当前所使用的内存情况,有了这个函数我们可以实时的检查服务器状态了,下面我来介绍memory_get_usage用法。

格式化memory_get_usage()输出

 代码如下 复制代码

<?php
function convert($size){
$unit=array('b','kb','mb','gb','tb','pb');
return @round($size/pow(1024,($i=floor(log($size,1024)))),2).' '.$unit[$i];
}
echo convert(memory_get_usage(true));
?>

输出:256 kb

PHP memory_get_usage() 函数还可以有个参数,$real_usage,其值为布尔值。默认为 FALSE,表示得到的内存使用量不包括该函数(PHP 内存管理器)占用的内存;当设置为 TRUE 时,得到的内存为不包括该函数(PHP 内存管理器)占用的内存。

 代码如下 复制代码

if (!function_exists('memory_get_usage')) 

 {
     function memory_get_usage() 

     {

        $pid = getmypid();

       if (IS_WIN) 

       {

            exec('tasklist /FI "PID eq ' . $pid . '" /FO LIST', $output);

             return preg_replace('/[^0-9]/', '', $output[5]) * 1024;

         } 

         else

        {

           exec("ps -eo%mem,rss,pid | grep $pid", $output);

           $output = explode(" ", $output[0]);

           return $output[1] * 1024;

         }

    }

}

在php中要删除文件我们需要使用php提供的unlink()文件删除函数,下面我来给大家详细介绍利用unlink删除文件的方法,有需要的朋友可参考本教程。

unlink(filename,context)

 代码如下 复制代码

if (unlink($file_delete)) {
echo "The file was deleted successfully.", "n";
} else {
echo "The specified file could not be deleted. Please try again.", "n";
}

判断文件是否存在

 代码如下 复制代码

$myfile = "./test1.txt";
if (file_exists($myfile)) {
$result=unlink ($myfile);
echo $result;
}
?>

批量删除文件

 代码如下 复制代码

function delFileUnderDir( $dirName="../Smarty/templates/templates_c" )
{
if ( $handle = opendir( "$dirName" ) ) {
   while ( false !== ( $item = readdir( $handle ) ) ) {
   if ( $item != "." && $item != ".." ) {
   if ( is_dir( "$dirName/$item" ) ) {
         delFileUnderDir( "$dirName/$item" );
   } else {
   if( unlink( "$dirName/$item" ) )echo "成功删除文件: $dirName/$item<br />n";
   }
   }
   }
   closedir( $handle );
}
}delDirAndFile( 'www.111cn.net');

删除目录下文件并指定那些不删除

 代码如下 复制代码

<?php
header("content-Type: text/html; charset=utf-8");
//配置开始
$path=".";//在些设置所删除的目录.为当前目录 如:删除path目录,引号里请添path;
$guolv="del.php,install.php,path";//设置需要过滤的文件或文件夹用英文状态下,号分隔
//配置结束
if($_GET['action']=="del"){
 $file= array_values_recursive(recurdir($path,$guolv));
 foreach($file as $k => $v){
  remove_directory($v);
 }
}else{
 echo "您的配置如下<br>
 要删除的目录为:
 ";
 if($path==".")echo "当前目录";else echo $path;
 echo "<br>您要过滤的文件或文件夹有:".$guolv."<br>
 如果确认过滤请<a href='?action=del'>点击此处开始删除相应的目录及目录下的所有文件</a>,如果配置不正确请到文件中修改
 ";
}


//删除目录及文件
function remove_directory($dir) {
  foreach(glob($dir) as $fn) {
    echo " removing $fn<br>n";
  if (!is_writable($fn))@chmod($fn, 0777);
  if(is_dir($fn)){@rmdir($fn);}else{@unlink($fn);}
   }
}
//扫描目录
function recurdir($pathname,$guolv='del.php')
{
 $result=array();$temp=array();
 //检查目录是否有效和可读
 if(!is_dir($pathname) || !is_readable($pathname))
 return null;
 //得到目录下的所有文件夹
 $allfiles=scandir($pathname);
 foreach($allfiles as $key => $filename)
 {
  //如果是“.”或者“..”的话则略过
  if(in_array($filename,array('.','..')))continue;
  if(count($guolv)>0){$lv=explode(",",$guolv);if(in_array($filename,$lv))continue;}
 
  //得到文件完整名字
  $fullname =$pathname . "/" .$filename;
  //如果该文件是目录的话,递归调用recurdir
  $temp[]=$fullname;
  if(is_dir($fullname)){
   $nowpath=explode("/",$fullname);
   if(count($guolv)>0){$lv=explode(",",$guolv);if(in_array($nowpath[count($nowpath)-1],$lv))continue;}
   $result[$filename] = recurdir($fullname);}
 }
 //最后把临时数组中的内容添加到结果数组,确保目录在前,文件在后
 foreach($temp as $f){
  $result[]=$f;
 }
 return $result;
}
//获取所有文件
function array_values_recursive($ary)
{
   $lst = array();
   foreach( array_keys($ary) as $k ){
  $v = $ary[$k];
  if (is_array($v)) {$lst = array_merge( $lst, array_values_recursive($v));}else{$lst[] = $v;}
   }
   return $lst;
}
?>

autoload机制可以使得PHP程序有可能在使用类时才自动包含类文件,而不是一开始就将所有的类文件include进来,这种机制也称为lazy loading。

下面是使用autoload机制加载Person类的例子:

 代码如下 复制代码

/* autoload.php */   
<?php    
function __autoload($classname) {
  require_once ($classname . “class.php”);
}    
$person = new Person(”Altair”, 6);
var_dump ($person);
?>    

PHP的autoload机制的实现

要在PHP中实现自动加载类,那就要说到一个魔术方法了,__autoload();这是PHP5添加的自动加载类方法。只要定义了该函数,那么如果PHP运行到该类找不到时,就会根据__autoload的规则去寻找。

自己也规划一下,跟set_include_path和get_include_path来配合使用,使自动加载类更完善点,代码飙一下(模仿magento的):

 代码如下 复制代码

 

$paths[] = BP . DS . ‘app’ . DS . ‘local’;
$paths[] = BP . DS . ‘app’ . DS . ‘base’;
$paths[] = BP . DS . ‘lib’;

$appPath = implode(PS, $paths);
set_include_path($appPath . PS . get_include_path());

这样就可以为PHP添加默认的类加载环境,这里只是把路径添加到了PHP环境,如果还要继续添加规则,可以再定义__autoload函数,不过我这里是对象使用的,就换了一种方法:spl_autoload_register方法,下面是自己根据magento的规则,自己弄了一套,其实跟magento差不多。

 代码如下 复制代码

class Autoload {

/**
* 自身对象
*
*/
protected static $_instance = null;

public function __construct() {

}

/*
* 实例化自身
*
*/

public static function instance() {
if (null == self::$_instance) {
self::$_instance = new self();
}

return self::$_instance;
}

/**
*
* 注册自动加载函数
*/
public static function register() {
spl_autoload_register(array(self::instance(), ‘autoload’));
}

/*
*
* 自动加载类
*/

public function autoload($class) {
if (!is_string($class)) {
return;
}

$classFile = str_replace(‘ ‘, DS, ucwords(str_replace(‘_’, ‘ ‘, $class)));
$classFile .= ‘.php’;
return include $classFile;
}

}

在php中checkbox复选框我们以一般是使用数组形式来做的,这样在php 中获取复选框值时我们会以数组形式存储的,所以只要遍历数组即可实现。
 代码如下 复制代码

<html>
<head>
<title>获取复选框的值</title>
</head>
<body>
<form action="result.php" method="POST">
<input type="checkbox" name="year[]" value="1">1 &nbsp;&nbsp;
<input type="checkbox" name="year[]" value="2">2 &nbsp;&nbsp;
<input type="checkbox" name="year[]" value="3">3 <br>

<input type="submit" value="提交" />
</form>
</body>
</html>

php代码

 代码如下 复制代码

<?php
foreach($_POST['year'] as $item){
echo $item."<br>";
}
?>

在php中将html标签转换成纯文本的方法有不少,像php自带了函数strip_tags它就可以把html直接转换在纯文本文格式了,下面我来具体来看看各种转换代码。

先来看strip_tags()函数用法

下面的例子删除<a>标记之外的所有标记:

 代码如下 复制代码

<!--?php <br ?--> $input = "This <a href="http://www.111cn.net/">example</a>
is <strong>yanshare</strong>!";
echo strip_tags($input, "<a>");
?&gt;
</a>

输入结果

This <a href="http://www.111cn.net/">example</a>
is yanshare!

这里就连接连接与连接中的内容都过滤掉了,我们如果想保留A中的内容可以参考下面代码

strip_tags有一个可选的参数allowable_tags指定在此过程中可以跳过的标记。下面的例子使用了strip_tags()删除字符串中的所以HTML标记:

 代码如下 复制代码


<!--?php <br ?--> $input = "Email <a href="example@example.com">example@example.com</a>";
echo strip_tags($input);
?&gt;
这回返回以下结果:

Email example@example.com


一个自定义的将html转换为无html标签的字符集,返回转换好的字符串

 代码如下 复制代码

function html2text($str){
   $str = preg_replace("/<style .*?</style>/is", "", $str);  $str = preg_replace("/<script .*?</script>/is", "", $str);
   $str = preg_replace("/<br s*/?/>/i", "n", $str);
   $str = preg_replace("/</?p>/i", "nn", $str);
   $str = preg_replace("/</?td>/i", "n", $str);
   $str = preg_replace("/</?div>/i", "n", $str);
   $str = preg_replace("/</?blockquote>/i", "n", $str);
   $str = preg_replace("/</?li>/i", "n", $str);
   $str = preg_replace("/&nbsp;/i", " ", $str);
   $str = preg_replace("/&nbsp/i", " ", $str);
   $str = preg_replace("/&amp;/i", "&", $str);
   $str = preg_replace("/&amp/i", "&", $str);
   $str = preg_replace("/&lt;/i", "<", $str);
   $str = preg_replace("/&lt/i", "<", $str);
   $str = preg_replace("/&ldquo;/i", '"', $str);
   $str = preg_replace("/&ldquo/i", '"', $str);
   $str = preg_replace("/&lsquo;/i", "'", $str);
   $str = preg_replace("/&lsquo/i", "'", $str);
   $str = preg_replace("/&rsquo;/i", "'", $str);
   $str = preg_replace("/&rsquo/i", "'", $str);
   $str = preg_replace("/&gt;/i", ">", $str);
   $str = preg_replace("/&gt/i", ">", $str);
   $str = preg_replace("/&rdquo;/i", '"', $str);
   $str = preg_replace("/&rdquo/i", '"', $str);
   $str = strip_tags($str);
   $str = html_entity_decode($str, ENT_QUOTES, "utf-8");
   $str = preg_replace("/&#.*?;/i", "", $str);

   return $str;
  }

[!--infotagslink--]

相关文章

  • php正确禁用eval函数与误区介绍

    eval函数在php中是一个函数并不是系统组件函数,我们在php.ini中的disable_functions是无法禁止它的,因这他不是一个php_function哦。 eval()针对php安全来说具有很...2016-11-25
  • php中eval()函数操作数组的方法

    在php中eval是一个函数并且不能直接禁用了,但eval函数又相当的危险了经常会出现一些问题了,今天我们就一起来看看eval函数对数组的操作 例子, <?php $data="array...2016-11-25
  • Python astype(np.float)函数使用方法解析

    这篇文章主要介绍了Python astype(np.float)函数使用方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-06-08
  • Python中的imread()函数用法说明

    这篇文章主要介绍了Python中的imread()函数用法说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-16
  • C# 中如何取绝对值函数

    本文主要介绍了C# 中取绝对值的函数。具有很好的参考价值。下面跟着小编一起来看下吧...2020-06-25
  • C#学习笔记- 随机函数Random()的用法详解

    下面小编就为大家带来一篇C#学习笔记- 随机函数Random()的用法详解。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2020-06-25
  • 金额阿拉伯数字转换为中文的自定义函数

    CREATE FUNCTION ChangeBigSmall (@ChangeMoney money) RETURNS VarChar(100) AS BEGIN Declare @String1 char(20) Declare @String2 char...2016-11-25
  • C++中 Sort函数详细解析

    这篇文章主要介绍了C++中Sort函数详细解析,sort函数是algorithm库下的一个函数,sort函数是不稳定的,即大小相同的元素在排序后相对顺序可能发生改变...2022-08-18
  • Android开发中findViewById()函数用法与简化

    findViewById方法在android开发中是获取页面控件的值了,有没有发现我们一个页面控件多了会反复研究写findViewById呢,下面我们一起来看它的简化方法。 Android中Fin...2016-09-20
  • PHP用strstr()函数阻止垃圾评论(通过判断a标记)

    strstr() 函数搜索一个字符串在另一个字符串中的第一次出现。该函数返回字符串的其余部分(从匹配点)。如果未找到所搜索的字符串,则返回 false。语法:strstr(string,search)参数string,必需。规定被搜索的字符串。 参数sea...2013-10-04
  • 浅谈redis key值内存消耗以及性能影响

    这篇文章主要介绍了浅谈redis key值内存消耗以及性能影响,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-02-07
  • 详解分析MySQL8.0的内存消耗

    这篇文章主要介绍了详解分析MySQL8.0的内存消耗,帮助大家更好的理解和学习使用MySQL,感兴趣的朋友可以了解下...2021-03-23
  • PHP函数分享之curl方式取得数据、模拟登陆、POST数据

    废话不多说直接上代码复制代码 代码如下:/********************** curl 系列 ***********************///直接通过curl方式取得数据(包含POST、HEADER等)/* * $url: 如果非数组,则为http;如是数组,则为https * $header:...2014-06-07
  • php中的foreach函数的2种用法

    Foreach 函数(PHP4/PHP5)foreach 语法结构提供了遍历数组的简单方式。foreach 仅能够应用于数组和对象,如果尝试应用于其他数据类型的变量,或者未初始化的变量将发出错误信息。...2013-09-28
  • C语言中free函数的使用详解

    free函数是释放之前某一次malloc函数申请的空间,而且只是释放空间,并不改变指针的值。下面我们就来详细探讨下...2020-04-25
  • PHP函数strip_tags的一个bug浅析

    PHP 函数 strip_tags 提供了从字符串中去除 HTML 和 PHP 标记的功能,该函数尝试返回给定的字符串 str 去除空字符、HTML 和 PHP 标记后的结果。由于 strip_tags() 无法实际验证 HTML,不完整或者破损标签将导致更多的数...2014-05-31
  • PHP加密解密函数详解

    分享一个PHP加密解密的函数,此函数实现了对部分变量值的加密的功能。 加密代码如下: /* *功能:对字符串进行加密处理 *参数一:需要加密的内容 *参数二:密钥 */ function passport_encrypt($str,$key){ //加密函数 srand(...2015-10-30
  • SQL Server中row_number函数的常见用法示例详解

    这篇文章主要给大家介绍了关于SQL Server中row_number函数的常见用法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-12-08
  • 解决使用OpenCV中的imread()内存报错问题

    这篇文章主要介绍了解决使用OpenCV中的imread()内存报错问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-16
  • php的mail函数发送UTF-8编码中文邮件时标题乱码的解决办法

    最近遇到一个问题,就是在使用php的mail函数发送utf-8编码的中文邮件时标题出现乱码现象,而邮件正文却是正确的。最初以为是页面编码的问题,发现页面编码utf-8没有问题啊,找了半天原因,最后找到了问题所在。 1.使用 PEAR 的...2015-10-21