`
jindw
  • 浏览: 508439 次
  • 性别: Icon_minigender_1
  • 来自: 初到北京
社区版块
存档分类
最新评论

PHP操作zip文件时有严重的内存泄漏问题

阅读更多
问题最初发现在 JSI 的php版本调试程序里面;windows 操作系统,php5.x系列。已经困扰我好几个月了。

因为,我要吧一些类库打包成jar或者zip文件,能后调试的时候,自动在压缩包内查找并组织具体js脚本。

但是,使用过程中却发现,Apache内存一个劲上涨。


平均每刷新一次,内存上涨5-7M。知道最后上涨到近2G,物理内存告急,Apache重新启动。
按理说,php跑一次就终止进程的,怎么可能有如此严重的问题呢?


最后,我被逼的是在没办法,抛弃php原生的 zip_open 系列函数。
自己整了一个纯php的解压实现。才算完事大吉了。


出问题的代码是这样的,简单的咬死,大家看看,这样都出错,还有没有天理!!
function zip_get_entry($file,$path){
    $zip = zip_open($file);
    if (!is_resource($zip)) {
    	 die(get_zip_error($zip));
    }
    while ($entry = zip_read($zip)) {
        if (zip_entry_name($entry) == $path && zip_entry_open($zip, $entry, "r")) {
            $result = zip_entry_read($entry, zip_entry_filesize($entry));
            zip_entry_close($entry);
            zip_close($zip);
            return $result;
        }else{
            zip_entry_close($entry);
        }
    }
    zip_close($zip);
}


如果您也碰到类似的问题,要寻找解决办法,可以使用这个参考实现:
http://code.google.com/p/jsi/source/browse#svn/trunk/JSI/web/scripts






分享到:
评论
1 楼 xieye 2009-06-19  
我当时遇到的问题是:
多个文件大小总和在一定范围内,可压缩。
超过一定范围,压缩总失败。

相关推荐

    提高php内存.zip

    这包括减少不必要的变量,合理使用数据结构,避免内存泄漏,以及及时释放不再需要的资源。使用像`unset()`这样的函数可以清除变量占用的内存。 6. **内存泄漏**: 检查是否存在内存泄漏,确保所有分配的内存都被...

    php-5.2.1-Win32.zip+php5安装配置说明文档

    首先,我们需要准备的主要文件是"php-5.2.1-Win32.zip",这是一个针对Windows系统的PHP二进制压缩包。解压这个文件,你会得到PHP的执行文件和其他必要的组件。确保选择一个合适的位置保存,因为后续配置会依赖这个...

    actionscript解析zip包

    在实际开发中,结合`aszip.fla`(可能是Flex项目的源文件)、`create.php`(可能用于生成Zip文件的PHP脚本)和`org`(可能包含库文件或其他组织结构)等资源,你可以构建更复杂的Zip文件操作功能。

    TbsZip(Zip处理类) v2.1.5.rar

    例如,你可以直接在内存中创建一个新的ZIP文件,或者读取已有的ZIP文件内容,无需担心磁盘空间的占用。此外,对于已经存在的ZIP文件,TbsZip支持添加、修改、删除其中的文件,甚至可以直接在压缩包内读取和写入数据...

    iProber PHP探针.zip

    在解压这个ZIP文件后,你会找到这个探针的源代码,通常是一个名为"iProber.php"的PHP文件。运行这个文件,你只需在服务器上通过浏览器访问这个文件的URL,即可看到探针生成的报告。 这个报告会包含以下关键信息: ...

    iniscan-master扫描PHP INI文件安全的工具的库.zip

    使用`iniscan-master`时,用户首先需要解压下载的`iniscan-master.zip`文件,然后按照文档说明运行程序,指定待检查的PHP INI文件路径。工具会输出一个报告,列明所有发现的问题及其修复建议。对于新手来说,这是一...

    各种版本 PHP memcache_dll .zip

    在使用PHP Memcache DLL时,确保你正确地配置了Memcached服务器,并且了解了如何优化缓存策略,避免数据过期和内存泄漏问题。同时,考虑到PHP的版本更新,要定期检查并更新你的Memcache扩展,以保持与最新PHP版本的...

    Gan PHP探针.zip

    2. **内存使用**:探针可以监控PHP进程的内存消耗,这对于发现内存泄漏和优化代码性能特别有用。 3. **运行时间**:探针通常会记录脚本的执行时间,帮助开发者识别性能瓶颈,优化代码运行效率。 4. **服务器负载**...

    基于PHP的探针测试版.zip

    5. **内存限制**:探针会显示PHP的内存限制,这对于诊断性能问题和内存泄漏很有帮助。 6. **上传限制**:探针可能还会报告文件上传大小和POST数据大小的限制,这对上传文件和处理大表单数据的应用来说很重要。 7. ...

    基于PHP的probe探针.zip

    1. **内存分析**:通过跟踪每个函数调用的内存分配,探针可以帮助识别内存泄漏,以及哪些代码片段消耗了大量内存。 2. **性能计时**:探针可以记录函数调用的开始和结束时间,以此计算出每个操作的执行时间,从而找...

    PHP实例开发源码-PHP探针 加密版.zip

    1. **内存管理**:探针可以显示PHP进程占用的内存,帮助开发者识别是否有内存泄漏。 2. **性能指标**:如CPU利用率,这可以反映PHP脚本的执行效率。 3. **PHP扩展状态**:显示哪些PHP扩展被加载,这对于确保网站功能...

    PHP实例开发源码—MyProber PHP探针.zip

    8. **性能优化**:探针代码的效率至关重要,因此源码中可能包含了PHP的性能优化技巧,比如减少不必要的计算、使用缓存、避免内存泄漏等。 9. **安全考虑**:探针程序可能会涉及到服务器的安全问题,例如防止SQL注入...

    基于PHP的浪点 PHP探针.zip

    3. **内存使用情况**:探针会提供内存消耗的实时数据,包括PHP进程的内存占用、内存限制以及内存泄漏检测。 4. **CPU使用率**:监测服务器的CPU负载,帮助识别是否存在过度资源消耗的问题。 5. **运行时间统计**:...

    基于PHP的9gan PHP探针清爽无敌增强版.zip

    【标题】"基于PHP的9gan PHP探针清爽无敌增强版.zip" 提供的是一个针对PHP环境进行健康检查和性能监控的工具。PHP探针通常用于帮助开发者和系统管理员了解服务器上的PHP运行环境,包括PHP版本、服务器信息、内存使用...

    php 在线 压缩 解压缩

    在给定的文件列表中,`unzip.php` 可能是解压缩文件的脚本,`myzip.php` 可能用于创建或修改ZIP文件,而`php在线压缩解压程序.url` 是一个快捷方式或书签,指向实际的PHP应用程序。 综上所述,PHP的在线压缩和解...

    PHP实例开发源码-php探针 手机版.zip

    4. **内存使用情况**:探针可以实时监测PHP进程的内存使用,帮助开发者优化代码,防止内存泄漏。 5. **CPU与内存占用**:探针能显示服务器的CPU使用率和内存占用情况,这对于监控服务器负载和性能很有帮助。 6. **...

    C1G的PHP探针.zip

    标题中的"C1G的PHP探针.zip"是一个与PHP相关的压缩包文件,通常包含用于监控、调试或性能分析的PHP探针工具。PHP探针是一种软件工具,它允许开发者深入了解PHP应用程序的运行情况,包括内存使用、执行时间、错误日志...

    php8.0.2nts - 用于Windows上使用的php压缩包

    9. **弱引用**:现在可以通过`WeakReference`类实现弱引用,避免了循环引用导致的内存泄漏问题。 10. **预定义异常类**:PHP 8.0提供了一些内置的异常类,如`LogicException`和`RuntimeException`,可以更准确地抛...

    PHP实例开发源码—PHPExcel 读写 Excel 2007 (OpenXML) 文件的 库.zip

    1. **资源管理**:由于PHPExcel可能消耗大量内存,应确保在操作完成后及时释放相关资源,避免内存泄漏。 2. **分块读写**:处理大数据时,使用`PHPExcel_WorksheetIterator`或自定义迭代器分块读取和写入数据。 3. *...

    PHP实例开发源码-爱特php探针 v2.0.zip

    【PHP实例开发源码-爱特php探针 v2.0.zip】是一个包含PHP源代码的压缩包,主要用于帮助开发者了解和学习PHP编程语言在实际应用中的实现方式。"爱特php探针"是一个小巧而实用的工具,它能够提供关于服务器环境、PHP...

Global site tag (gtag.js) - Google Analytics