解决PHP大数据量

2021-06-28 12:06

阅读:529

标签:嵌套循环   查询   焦点   黑白   内存溢出   生成   是什么   合格   数据库   

  无锡、佛山、合肥、大连、福州、厦门、哈尔滨、济南、温州、南宁、长春、泉州、石家庄、贵阳、常州、南通、嘉兴、太原、徐州、南昌、金华、惠州、珠海、中山、台州、烟台、兰州、绍兴、海口、扬州

工业X-RAY检测设备可用于锂电池检测等电池行业,电路板行业,半导体封装,汽车行业,电路板组装(PCBA)行业等,以观察和测量包装后内部物体的位置和形状,发现问题,确认产品是否合格,并观察内部状况。


本教程操作环境:windows7系统、Dell G3电脑。

每一个行业都会有一些得力的设备帮手,今天我们来聊一聊飞速发展的电子行业中的得力干将“x-ray检测设备”,相信在此行业工作的朋友都有一定的了解。此文为大家总结了x-ray检测设备原理以及应用领域,让大家看完能够快速掌握。

一、x-ray检测设备原理

1、首先X-RAY设备这个装备主要是利用X光射线的穿透作用,X光射线波长很短,能量特别大,照在物质上时,物质只能吸收一小部分,而大部分X光射线的能量会从物质原子的间隙中穿过去,表现出极强的穿透能力。pcba

2、而x-ray设备能检测出来就是利用X光射线的穿透力与物质密度的关系,利用差别吸收这种性质可以把密度不同的物质区分开来。所以如果被检测物品出现断裂、厚度不一,形状改变时,对于X光射线的吸收不同,产生的图像也不同,故而能够产生出差异化的黑白图像。

3、可用于IGBT半导体检测、BGA芯片检测、LED灯条检测、PCB裸板检测、锂电池检测、铝铸件无损探伤检测。

4、简单点说就是通过使用非破坏性微焦点x-ray设备输出高质量的荧光透视图像,然后转换由平板探测器接收到的信号。所有功能的操作软件只需鼠标即可完成,非常易于使用。标准的高性能X光管可以检测5微米以下的缺陷,有些x-ray设备能检测2.5微米以下的缺陷,系统放大倍数可以达到1000倍,物体可以移动倾斜。通过x-ray设备可以执行手动或自动检测,并自动生成检测数据报告。

二、X-RAY检测设备的应用领域

1、工业X-RAY检测设备应用领域十分广泛,常见的可用于锂电池检测等电池行业,电路板行业,半导体封装,汽车行业,电路板组装(PCBA)行业等,以观察和测量包装后内部物体的位置和形状,发现问题,确认产品是否合格,并观察内部状况。

2、具体运用范围:主要用于SMT、LED、BGA、CSP倒装芯片检测,半导体、封装元器件、锂电行业,电子元器件、汽车零部件、光伏行业,铝压铸模铸件、模压塑料,陶瓷制品等特殊行业的检测。
PHP中我们了解了那么多关于PHP的知识,不知道你们对运用PHP的技能掌握多少,我相信很大一部分人会了解但是不会运用知识,那么不急本篇文章就是带领大家更深刻的去运用PHP。

分析

1、工具
首先明确我们需要导出的数量50W+,其次我们使用过都知道Excel2003版最大行数是65535行,Excel2007版的行数(1048576行)才能达到我们的要求,所以我们需要使用Excel的版本必须为2007版及以上。

2、类库
目前最常用的PHP处理Excel的类库是PHPExcel(经实例测试导出1w条数据,再加上各种数据判断处理我用了5-8分钟);我在网上还查到一款叫PHPOffice(这个我没用过,大家可以尝试一下,据说效率比PHPExcel要好,等下次再写篇博文介绍一下);还有一个fputcsv(),导出的是csv格式文件,也可以用Excel文件打开。

1、超时
这个是直接的,请求超时。在这个多的数据请求处理下,超市非常常见,这时我们需要修改PHP的配置:set_time_limit(0)。

2、溢出
我们一次性的把所有数据从数据库取出填充到内存中,一下不光内存存储不够,并且如果服务器CPU配置不高的话使用率一下也能达到100%,会造成服务器卡负载。关于溢出我们也需要修改PHP的配置:ini_set(‘memory_limit‘, ‘1024M‘)。

解决方案
1、使用PHPExcel导出
使用此种方案一下导出50w+的数据体验非常的不好,经测试之后是虽说是可行的,服务器上也可以导出,就是时间会慢一些,而且会是一直下载状态。如果使用php类库,建议将php升级到最新的php7版本节省内存,且计算速度要快

2、使用csv导出
如果不是用php类库,那么fputcsv()是最佳方式,这种方式要比PHPExcel好很多;因为csv文件较小,csv文件数据可存放数量可大可小,csv生成不占用大量CPU和时间,而Excel的生成时间随着文件数据量的增加成而所需时间越多。

3、理想方案
将数据按照某种条件进行分割,减少导出的数据量,例如按照日期进行导出,可一周导出一次或者一天导出一次,数据分割肯定是必须的步骤,防止内存溢出,运行超时;

进行算法优化,在数据循环时,减少嵌套循环,生成csv或者Excel的数据对象时,一次成型,减少数据库查询次数,如果需要用到其他数据请提前生成相应数据结构的数据。

4、最快方案
将需求交给运维,直接运行sql语句进行导出:

SELECT

*

FROM

table_name

INTO OUTFILE ‘F:/test.csv‘

FIELDS TERMINATED BY ‘,‘

OPTIONALLY ENCLOSED BY ‘"‘

LINES TERMINATED BY ‘\r\n‘;

运行此语句可能出现如下错误:


The MySQL server is running with the --secure-file-priv option so it cannot execute this statement

这个是由于Mysql的配置权限问题,可以运行SHOW VARIABLES LIKE ‘%secure%‘;查看 secure-file-priv 当前的值是什么,NULL就代表禁止导出,所以需要设置一下。在Mysql安装路径下的my.ini文件,修改设置一下路径,没有的话添加上此配置:

secure_file_priv=F:/

50w+的数据你会发现很快就导出了。你也可以写此此语句,知道此文件在服务器上的路径,进行打包下载即可。

解决PHP大数据量

标签:嵌套循环   查询   焦点   黑白   内存溢出   生成   是什么   合格   数据库   

原文地址:https://www.cnblogs.com/c919dahuiji/p/14929746.html


评论


亲,登录后才可以留言!