从大文件上传、数据导入、数据清理、消息推送说开来

工作   725阅读

秦山核电精神:做“国之光荣”的坚定捍卫者和发扬者

今天写的内容跟我所从事的工作有一点关系,至少谈到我为什么会去开发这么一段程序,主要是在上班的时候遇到类似的问题,为了解决问题,于是动手去写代码进行验证,逐渐的写成了这样的一段代码。

首先,从我的工作说起。从年初调到现在的信息部门,主要参与的工作是关于EAM的开发管理。根据最新的安排,我将继续在下一个版本的EAM开发中做开发管理的工作。恰好11月到12月底这段时间是上一个版本开发部署完毕,到下一个版本需求搜集的阶段,我的工作相对少一点,正好我有一个比赛的自研项目要做,所以在这一个月的时间里自己专心开发,包括技术上的攻关(暂且这么写吧,因为难度确实比较大)。遇到的技术难题,解决之后,写了一些代码,把其中的一部分代码块剥离出来,就有了下面的内容。

一、超大文件上传

假定我们的服务器环境限制上传的单个文件最大体积为2M,这时候我有一个100M的文件需要上传到服务器上去,怎么传?

第一个想到的办法就是修改服务器环境配置,比如在php.ini中将upload_max_filesize的值调成1000M,这样上传100M的文件就是小意思了,也许真的能够上传成功,比如在代码中设置set_time_limit(0),让php的代码可以无限制时间的执行,直到成功。

改服务器环境配置的方法显得十分笨拙,因为如果遇到需要上传1G的文件是不是又要改了呢,而且还需要重新启动apache的服务。于是我想到了下面的方法。

分片上传,然后再合并

将100M的文件以二进制的形式分割成许多小片,每一个小片体积不超过2M,然后按照顺序将一个一个小片文件上传到服务器上,最后执行合并的操作,恢复成原来的文件。“分片-上传-合并”的过程由程序自动完成,用户并不会察觉到这些动作。这种方式最灵活,对服务器的要求最低,能够机动应对各种大小的单文件上传过程。

二、数据导入远程数据库

在本地电脑上整理了很多条数据,如果手工的逐条通过后台来提交,速度是慢了一点,而且反复同样的机械操作,人会感到很烦。对于excel的表格数据,又专门的工具,只需要自己简单写一些代码就可以读出excel中的数据,然后写入到数据库。“读excel-写数据库“这个过程也可以写代码自动完成。

所以,总结起来,要把一个大体积的excel数据导入到数据库,只需要点一下按钮,然后等着结束,中间你可以解放双手去干点别的。

三、清理无用的数据

数据都有时效性,过成有效期限的数据就是历史数据,对于只要求最新数据的情况,当然要能够定时的清理掉那些没有用的数据。清理数据的过程是导入数据的逆过程,也希望能够自动完成。只要设置好一个规则,写代码就可以按照这个规则去清理无效的数据。比如我要删除有效时间小于当天时间的数据。

四、推送最新消息

我们更新了消息,想第一时间让另一个人知道,除非那个人在实时的查看,否则,只有我们主动的告知。这个场景在我平时的工作中就遇到过,文件系统中的文件会不定期的升版,另一个引用文件的系统总是希望引用到的是最新的文件,所以就要求文件系统一旦有文件的升版就马上告诉它。

做互联网网站的人都希望百度搜索引擎能够第一时间收录自己的文章,而百度的爬虫并不会实时的监听网站的数据更新,也就不四、推送最新消息会马上来爬,说不定一个周期就是一个月或者是一年,所以网站主就会主动的去推送这个新的消息,主动的告诉百度的爬虫这边有更新快点来爬。

综上,尽管在核电厂内网与外网隔断的情况下,遇到的问题其实有一定的共同特点,用相同的技术可以解决。

分割线


自己做开发,感觉就像是在搬砖,只要把砖搬到指定的位置就可以了,然后一旦去做开发管理,这又是一门学问,首先要成功的完成从开发到管理的身份转型。即将面临的是工作内容的不一样,沟通方式的不一样,协调的问题不一样。

备注:测试的excel文件是从淘宝联盟网站下载下来,优惠券都是真实的~

浏览请前往http://www.8888888888888888888888888888888888.com

分片上传文件以及导入excel数据

上传文件、导入excel数据截图

火狐截图_2016-12-21T12-49-19.935Z.png

清理数据截图

喜欢请常来,打赏请随意。

  1. 凯哥自媒体    回复

    分享的不错,谢谢
  2. 商学院    回复

    开发和开发管理,执行者和管理者的区别