首页 » PHP » 阅读文章

让PHP减少RAM消耗

2011-11-10 09:39 4255 0 发表评论
标签:

PHP是一种具有广泛的自动化功能,内存强的语言。当他涉及到大规模的编程问题时,如处理GB级别的数据库或者计算PI,如果没有正确处理就会遇到许多的麻烦。当然发生这种事情取决于你用什么操作系统,你对你的设置做了哪些更新。但有些信息令人费解,因为有些网络服务器有问题但是有的没有。

因此我要去讨论这些功能,使其不可能去处理超过你拥有的RAM数量的信息,因此检查下面的代码和检测下面的PHP代码的bug

 

PHP语法

<?php

$b=pow(2,20);

 for($i=0;$i<1024;$i++){

$a=bcpow(’10’,$b);

 }

?>

 

现在如果你检查代码,是一个什么都不能做的简单的循环。我会告诉你他为什么如此的重要。在第一行是正常的PHP开放标识。然后,第二行是一个变量分配一个号码,就等于1MB字节。这将在以后使用。接下来是一个循环,为循环内的变量赋值。现在有趣的是这个变量的赋值。变量被分配1MB的数据,因为其他变量是数字应约1MB的RAM使用。然而,随着RAM使用,在该线程的循环会慢慢变成1GB(取决于您的Web服务器),直到它执行完毕。所以根据PHP在Web服务器上不删除旧数据,这是以前,但存储每个变量,迄今为止,在电脑RAM分配,直到线程结束。这样处理2TB的数据是是一件很头痛的事情。因此,让我们看到这项工作。

幸运的是,PHP有一个函数,可以处理这个问题这是一个很大的慰藉。这是unset()函数。未设置功能,应使用所有变量都是字符串或不被再次使用或正在重新分配,尤其是长字符串和大型阵列的排列。所以上面的脚本修正版本如下:

 

PHP语法

 <?php

$b=pow(2,20);

for($i=0;$i<1024;$i++){

unset($a);//this is added

$a=bcpow(’10’,$b);

}

?>

 

有时候你会看到以下

 

PHP语法

<?PHP

$ B=pow(2,20)可以;

($ I=0;我<1024美元;$ I+){

$ A=”;/ /这是错误的,将无法正常工作

$ A=bcpow(’10’,$ B);

 }

 ?>

 

有些人分配一个空字符串作为变量未设置,但如果你需要取消设置一个变量,它的确是最好用unset()函数的功能,或已嵌入到PHP中,可以创建额外的RAM消费。所以只要你恰当使用unset()函数,你可以执行一个大的脚本,在这种情况下而只有少量的RAM或1MB RAM取代1GB的RAM。

本文地址:http://www.jwzzsw.com/archives/956.html

文章作者:思悟
版权所有 © 转载时请以链接形式注明作者和原始出处!

评论 共0条 (RSS 2.0) 发表评论

  1. 暂无评论,快抢沙发吧。

发表评论

联系我 Contact Me

回到页首