代码如下:/** @Usage: use some other storage method(mysql or memcache) instead of php sessoin @author:lein @Version:1.0 */ session_start(); if(!isset($_SESSION['test'])){ $_SESSION['test']="123_lein_".date("Y-m-d H:i:s"); } class session{ //session data private $data; //engine,mysql or memcache private $engine; //php session expire time private $sessionexpiredTime; //current user's session cookie v...
因为这个是语言的问题,常规方案比较难以解决。下面是一种通过string 解决的方案。 代码如下:$total = 100000; $double = ""; for ($i = 0; $i < $total; $i++) { $double .= pack("d", $i + 0.1); } for ($i = 0; $i < $total; $i++) { unpack("@" . ($i * 8) . "/d", $double); } 这个例子用一个string 保存一个double 的数组。然后在使用的时候unpack出来。 当然,这会影响性能。要看具体的需求。 比如这样的情况下: 你有10个...
SEBUG-ID:1491 SEBUG-Appdir:PHP发布时间:2007-03-17 影响版本: PHP PHP 5.2.1 PHP PHP 5.1.6 PHP PHP 5.1.5 PHP PHP 5.1.4 PHP PHP 5.1.3 PHP PHP 5.1.3 PHP PHP 5.1.2 PHP PHP 5.1.1 PHP PHP 5.1 PHP PHP 5.0.5 PHP PHP 5.0.4 PHP PHP 5.0.3 + Trustix Secure Linux 2.2 PHP PHP 5.0.2 PHP PHP 5.0.1 PHP PHP 5.0 candidate 3 PHP PHP 5.0 candidate 2 PHP PHP 5.0 candidate 1 PHP PHP 5.0 .0 PHP PHP 5.2 漏洞描述: PHP是一款广...
代码如下:ini_set('memory_limit', '250M'); //内存限制 set_time_limit(0); //http://www.bkjia.com/PHPjc/323103.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/323103.htmlTechArticle 代码如下:ini_set(memory_limit, 250M); //内存限制 set_time_limit(0); //...
昨天, 有同事在PHP讨论群里提到, 他做的一个项目由于MySQL查询返回的结果太多(达10万条), 从而导致PHP内存不够用. 所以, 他问, 在执行下面的代码遍历返回的MySQL结果之前, 数据是否已经在内存中了? - 代码如下: while ($row = mysql_fetch_assoc($result)) { // ... } 当然, 这种问题有许多优化的方法. 不过, 就这个问题来讲, 我首先想到, MySQL是经典的C/S(Client/Server, 客户端/服务器)模型, 在遍历结果集之前...
一、 内存 在PHP中,填充一个字符串变量相当简单,这只需要一个语句"<?php $str = 'hello world '; ?>"即可,并且该字符串能够被自由地修改、拷贝和移动。而在C语言中,尽管你能够编写例如"char *str = "hello world ";"这样的一个简单的静态字符串;但是,却不能修改该字符串,因为它生存于程序空间内。为了创建一个可操纵的字符串,你必须分配一个内存块,并且通过一个函数(例如strdup())来复制其内容。 { char *str; s...
一,函数原型 int memory_get_usage ([ bool $real_usage = false ] ) 二,版本兼容 PHP 4 >= 4.3.2, PHP 5 三,基础用法与实例 1,获取当前的内存消耗量 代码如下:echo memory_get_usage(); $var = str_repeat("liuhui", 10000); echo memory_get_usage(); unset($var); echo memory_get_usage(); ?> 分别输出:62328 122504 62416 说明:memory_get_usage()函数输出的数值为bytes单位 2,格式化memory_get_usage()输出 代码如...
代码如下:for ( $i = 1; $i < 100; $i++ ) { $str = str_repeat(01234567, $i); $a = memory_get_usage(); unset($str); $b = memory_get_usage(); echo "\n ".$i.: .($b - $a). Bytes.; } 从结果看出: 8 x 32 = 256 在256字节长的时候才真正有必要释放内存,有些人说,不如直接$str = null来的速度快。 结果如下: 1: 0 Bytes. 2: 0 Bytes. 3: 0 Bytes. 4: 0 Bytes. 5: 0 Bytes. 6: 0 Bytes. 7: 0 Bytes. 8: 0 Bytes. 9: 0 Byte...
下面是PHP memory_get_usage()使用示例: 代码如下:echo memory_get_usage(), ; //143952 $tmp = str_repeat(http://blog.micxp.com/, 4000); echo memory_get_usage(), ; //232048 unset($tmp); echo memory_get_usage(); //143952 上面的程序后面的注释代表了它们的输出(单位为 byte(s)),也就是当时 PHP 脚本使用的内存(不含 memory_get_usage() 函数本身占用的内存) 由上面的例子可以看出,要想减少内存的占用,可以使...
下面是使用示例: 代码如下:echo memory_get_usage(), ''; // 313864 $tmp = str_repeat('http://www.nowamagic.net/', 4000); echo memory_get_usage(), ''; // 406048 unset($tmp); echo memory_get_usage(); // 313952 ?> 上面的程序后面的注释代表了它们的输出(单位为 byte(s)),也就是当时 PHP 脚本使用的内存(不含 memory_get_usage() 函数本身占用的内存)。 由上面的例子可以看出,要想减少内存的占用,可以使用 PHP ...
phpExcel将读取的单元格信息保存在内存中,我们可以通过代码如下:PHPExcel_Settings::setCacheStorageMethod() 来设置不同的缓存方式,已达到降低内存消耗的目的! 1、将单元格数据序列化后保存在内存中代码如下:PHPExcel_CachedObjectStorageFactory::cache_in_memory_serialized; 2、将单元格序列化后再进行Gzip压缩,然后保存在内存中代码如下:PHPExcel_CachedObjectStorageFactory::cache_in_memory_gzip; 3、缓存在临时的磁...
解决办法: 1,修改 php.ini将memory_limit由 8M 改成 16M(或更大),重启apache服务 2,在PHP 文件中 加入 ini_set(”memory_limit”,”100M”); 注意:为了系统的其它资源的正常使用 请您不要将 memory_limit设置太大,其中-1为不限 3,修改.htaccess 文档(前提是该目录支持.htaccess)在文档中新增一句:php_value memory_limit 16M(或更大)http://www.bkjia.com/PHPjc/326727.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPj...
可能有的读者碰到过类似下面的错误吧:Fatal error: Allowed memory size of X bytes exhausted (tried to allocate Y bytes)这个错误的信息很明确,PHP已经达到了允许使用的最大内存了,通常上来说这很有可能是我们的程序编写的有些问题。比如:一次性读取超大的文件到内存中,或者出现超大的数组,或者在大循环中的没有及时是放掉不再使用的变量,这些都有可能会造成内存占用过大而被终止。 PHP默认的最大内存使用大小是32M, 如果...
上次说到了refcount和is_ref,这里来说说内存泄露的情况 代码如下:$a = array(1, 2, &$a);unset($a);在老的PHP版本中,这里就会出现内存泄露,分析如下: 执行第一行,可以知道$a和$a[2]指向的zval refcount=2,is_ref=1 然后执行第二行,$a将会从符号表中被删除,同时指向的zval的refcount--,此时refcount=1,因为refcount!=0,故此zval不会被当做垃圾回收,但是此时我们却失去了$a[2]指向这个zval的入口,因此这个zval成了一块内存...
首先让我们看一个问题: 如下代码的输出, 代码如下:var_dump(memory_get_usage());$a = "laruence";var_dump(memory_get_usage());unset($a);var_dump(memory_get_usage());输出(在我的个人电脑上, 可能会因为系统,PHP版本,载入的扩展不同而不同):int(90440)int(90640)int(90472)注意到 90472-90440=32, 于是就有了各种的结论, 有的人说PHP的unset并不真正释放内存, 有的说, PHP的unset只是在释放大变量(大量字符串, 大数组)的时候才...