`

php按照查询条件大数据量进行导出,如果进行有效率导出

 
阅读更多

对php来说将一些配置信息数组保存到文件中是司空见惯的情况,就我目前所知,有以下几种保存方法

  1. 直接用var_export写成return array(...);的php代码,然后读取的时候用require解析即可。
  2. 使用serialize函数序列化一个数组,然后读取的时候用unserialize反序列化
  3. 使用json_encode序列化一个数组,然后读取的时候用json_decode反序列化
  4. 使用其它的文件格式,比如yaml或者ini

 

由于用到了比较多的数组,所以想搞清楚php的array和session的容量到底有多大,其实主要是想验证一下之前我听说的array的容量是跟配置有关这一说法的正确性。

array的验证代码程序:

$arr=array();//这一行可以省去的,我是比较奉行java中的先声明后使用原则
        for ($i=0;$i<8000000;$i++){
              $arr[$i]=$i;
        }

echo count($arr);
       unset($arr);

session的验证代码程序:

ession_start(); 
       for ($i=0;$i<8000000;$i++){
              $_SESSION[$i]=$i;
       } 

echo count($_SESSION);

运行上面的程序后,会出现下面的错误提示:

注:此时我php.ini中memory_limit值的配置是10M

然后 接下来我的验证方法是把php.ini中memory_limit的值改为1000M,然重启apache,再次运行上面的验证程序,则可以正常输出array和session的大小值。

难道不是我修改了php.ini的原因,是其他巧合问题导致的正常?我要再次验证一下是不是php.ini中memory_limit配置的原因,我把该值重新配置为10M,重启apache后,然后再次运行上面的验证程序,结果的确又报上面的内存不足异常了。现在我相信了array和session的容量大小的确是跟php.ini中memory_limit的配置有关的。
不过我最大的一次配置该值的大小为1300M,运行验证程序后我的电脑几乎处于休眠状态,呵呵,下面是性能占用图:

 

在excel导出,大量数据按查询条件导出,我想到了session和文件存储按查询导出的数据。

如果按照session导出,我当初想到如果直接将最终查询sql存放在session中,但是在导出时候,仍然需要跟数据库交互,数据量太大,还是影响读取速度,对用户不是很友好,所以我想到将查询获取的数组放在数组存放在session中,经过上述测试是不可取的。

最终我想到将查询获取的数组以json形式存放在文件中,在导出进行读取,直接处理数组,结果方法是可行的。

当然也可以借助其他语言进行导出,比如python进行导出,效率还是不错的。

以上仅为我的个人验证观点,仅为分享使用,验证方法肯定存在不足,所以请大家指导,非常感谢,

分享到:
评论

相关推荐

    数据导出工具-VB源码-根据需求略改即用

    此外,还可以利用数据库的聚合函数如COUNT()配合GROUP BY子句来查找重复项,这种方法在处理大量数据时更有效率。 接着,导出数据是将查询结果输出到外部文件的过程。VB支持多种导出格式,如CSV(逗号分隔值)、...

    数据库数据批量导出Excel方法[共三种方法]

    数据库数据批量导出到Excel是IT行业中常见的任务,特别是在数据分析、报表生成以及数据...而如果需要定制化或者大量重复操作,使用编程语言或ETL工具会更有效率。在处理过程中,确保数据安全和隐私保护也是非常重要的。

    淘宝客数据导出工具

    data.db 是一个数据库文件,很可能存储了用户的淘客数据,包括但不限于推广链接、点击量、转化率、佣金收入等关键信息。数据库文件的优点在于数据结构化,便于快速查询和分析。而 taobaoke.exe 则可能是该淘宝客数据...

    Java使用POI导出大数据量Excel的方法

    在Java开发中,导出大数据量的Excel文件可能会面临内存溢出的问题,特别是在使用Apache POI库时。这是因为默认情况下,POI会将整个Excel工作簿存储在内存中,当数据量过大时,内存消耗非常显著,可能导致系统崩溃。...

    JAVA使用线程池查询大批量数据

    例如,如果数据量大且系统资源充足,可以适当增加线程数量;反之,若系统资源有限,应控制线程数量,避免资源过度消耗。 ```java int corePoolSize = 4; int maximumPoolSize = 8; long keepAliveTime = 60L; ...

    海量数据导入与导出MATLAB

    然而,MATLAB最初设计主要用于解决矩阵运算和数值分析问题,因此通常处理的数据量较小,原始数据的导入主要是通过命令窗口手动输入。这种方式对于处理小规模数据集尚可接受,但对于大规模数据集来说存在明显局限性,...

    c#导入导出数据到excel

    4. **CSV文件作为中介**:在某些情况下,如果数据量巨大或者系统资源有限,可以先将数据导出为CSV(逗号分隔值)文件,然后在Excel中打开。C#中可以使用StreamWriter轻松写入CSV,而读取则可以使用TextFieldParser或...

    导出EXCEL2007版本

    5. **性能优化**:如果数据量很大,一次性写入可能导致性能问题。可以考虑分批写入,或者利用Excel的内存优化特性,比如先将数据写入内存,然后一次性写入磁盘。 6. **错误处理**:在编程过程中,必须考虑到可能...

    C# 数据表(Dataset)操作 合并 查询一箩筐(源码)(批量数据导入导出数据库)

    4. **批量数据导入导出数据库**:在处理大数据量时,一次性插入或更新大量记录比单条处理更有效率。C#提供`SqlBulkCopy`类用于快速将数据表或DataTable的内容批量导入到SQL Server数据库中。相反,使用`...

    用友总账导入导出工具2.0

    总之,用友总账导入导出工具2.0是企业财务管理中的得力助手,通过其高效的数据处理能力,有效解决了大量财务数据的导入导出问题,提高了财务管理的自动化程度,降低了出错率,同时也为企业的数据安全提供了保障。...

    利用导出功能实现历史数据迁移

    在我们的解决方案中,我们主要考虑从三张数据量特别巨大的图像表中将数据分期分步迁出,腾出宝贵的空间。其他表由于数据量较小,保持不动。这样可以使数据库中图像数据所占据的空间得到有效控制,数据库性能不会受到...

    oracle 方便快捷的数据导入/导出命令

    `expdp`不仅速度快,还支持并行导出,能够处理大数据量更有效率。 1. 基本语法: ``` expdp [username/password@connect_string] directory=dir_name dumpfile=file_name[:file_size] [parameters] ``` - `...

    excel 大数据量读取

    6. **并发处理**:如果数据量非常大,可以考虑多线程并行处理不同的部分,进一步提高效率。但需要注意线程安全问题,防止数据冲突。 7. **资源释放**:在完成读取和写入后,务必正确关闭和释放所有资源,包括文件流...

    实时流式数据导出方法.pptx

    - **数据加密**:在数据导出过程中进行加密,以保障数据的安全。 - **身份认证**:通过控制数据访问权限来防止未授权访问。 ### 基于消息队列的流式数据导出 #### 1. 基于Kafka的流式数据导出 - **实时数据流**:...

    轻量级数据库文档导出工具,支持word html

    传统上,数据库文档的生成常常需要复杂的操作和大量的人力资源,但随着轻量级数据库文档导出工具的出现,这一问题得到了有效解决。 此类工具专为满足高效、便捷的数据库文档需求而设计,具有体积小巧、无需安装即可...

    如何将地图导出成dxf文件用来作为CAD底图共6页.pdf

    等待导出完成,过程中可能需要一些时间,尤其是处理大范围或高分辨率的数据。 6. **在CAD中打开DXF文件**: - 使用AutoCAD、FreeCAD或其他CAD软件打开刚导出的DXF文件。地图数据将以线条、多边形等形式呈现,可...

    asp利用sql进行筛选导出excel

    本示例提供了一种高效的方法,通过SQL查询直接筛选出所需的数据,并直接导出到Excel,而无需在服务器上创建Excel对象。这种方法的优点在于减少了出错的可能性,因为创建和操作Excel对象可能会遇到各种兼容性或资源...

    全国普通高校招生网上录取系统导出投档单数据处理探讨.pdf

    在处理这些数据时,面对的挑战包括数据量大、信息字段繁多且复杂,以及信息以代码形式存储等问题。 针对这些问题,本文提出了一种利用Access工具来汇总处理投档单数据的方法。该方法可分为两个主要步骤,即数据汇总...

    多线程以JDBC的方式返回海量数据

    然而,当数据量非常大时,一次性加载所有数据可能会导致内存溢出,降低应用程序性能。 为了解决这个问题,我们可以采用多线程技术。多线程允许程序同时执行多个任务,提高资源利用率和程序响应速度。在处理海量数据...

Global site tag (gtag.js) - Google Analytics