您的位置: 翼速应用 > 业内知识 > APP动态 > 正文

如何让PHP读取大文件时不会导致服务器崩溃

作为PHP开发人员,并不需要担心内存管理,因为,PHP引擎在清理方面做得很出色,但有些时候,可能需要一个更舒适的运行环境,比如在很小的VPS上运行一个大型项目的时候,或者需要在小服务器上读取大型文件时。那么如何使用PHP读取大文件而不导致服务器崩溃?


    1、衡量成功

   衡量成功需要关注两个指标。首先是CPU的使用,PHP读取大文件的时间,第二个是内存的使用,PHP读取大文件执行需要多少内存,两者通常成反比,可以以内存使用为代价避免CPU的使用,反之亦然。在多进程或多线程PHP应用程序中,CPU和内存的使用都是重要的考虑因素。在传统的PHP体系结构中,当任何一个达到服务器的极限时,都会出现问题。在PHP中测量CPU的使用是不切实际的,最好的方式是测量内存的使用情况。


php文件处理方案.png


    2、解决方法

    可以采取许多方法来高效地读取文件。但有两种方法可以更好的使用PHP读取大文件而不导致服务器崩溃。


    首先,同时读取和处理数据,或者根据读取的内容执行其他操作。每1万行读取一个文件并创建单独的排队处理作业,只需要在内存中保留至少1万行,并将其传递给排队的作业管理器。

    例如:正在读一个文本文件,而文本文件是峰值内存使用量是100MB,如果读取文本文件的每一行,那么文本文件大小不变的情况下,峰值内存使用量可能只有400KB,即使把文本文件分割成几千块,仍然只使用400KB内存。


    其次,转换数据流,而不需要真正访问数据。可以压缩一个特别大的API响应的内容,不用在乎内容是什么,但可以确保内容以压缩形式备份。这是在不需要对数据进行操作的情况下,可以将文件数据从一个文件传递到另一个文件。例如:正在读取数据库文件,而文件内存使用量是100MB,常规方法读取可能需要满足100MB方可,而通过压缩打包的方式读取可能只需要20MB,这也像下载游戏客户端一样,完成下载的文件可能只需要1GB,而安装完成后的文件就是4-5GB了。 


   上述就是使用PHP读取大文件而不导致服务器崩溃的方法,虽然这一问题并不经常遇见,但在处理大型文件时很容易出错,如果不小心内存的使用,就很容易让整个服务器崩溃。而通过上述方法能够更多地思考如何高效地读取和编写大型文件。并避免使用错误的方法导致PHP读取大文件而导致服务器崩溃。

我来说两句

0 条评论

推荐阅读

  • 响应式布局CSS媒体查询设备像素比介绍

    构建响应式网站布局最常见的是流体网格,灵活调整大小的站点布局技术,确保用户在使用的幕上获得完整的体验。响应式设计如何展示富媒体图像,可以通过以下几种方法。

    admin
  • 提升网站的性能快速加载的实用技巧

    网站速度很重要,快速加载的网站会带来更好的用户体验、更高的转化率、更多的参与度,而且在搜索引擎排名中也扮演重要角色,做SEO,网站硬件是起跑线,如果输在了起跑线,又怎么跟同行竞争。有许多方法可提升网站的性能,有一些技巧可以避免踩坑。

    admin
  • 织梦CMS TAG页找不到标签和实现彩色标签解决方法

    织梦cms是我们常见的网站程序系统的一款,在TAG标签中常常遇到的问题也很多。当我们点击 tags.php 页的某个标签的时候,有时会提示:“系统无此标签,可 能已经移除!” 但是我们检查程序后台,以及前台显示页面。这个标签确实存在,如果解决这个问题那?

    admin
  • HTML关于fieldset标签主要的作用

    在前端开发html页面中常用的标签很多,今天为大家带来的是关于HTML中fieldset标签主要的作用说明,根据技术分析HTML

    admin

精选专题