“时光书信”项目是如何运作的

/ 0评 / 0

时光书信(遗书自动发送)项目详解

0x01 前言

这个项目的最初构思可以追溯到我还在上初中的时候,不得不承认我是一直都是个坚定的悲观主义者,也正因此,才有了这个项目的诞生。不过,因为学业繁忙,更是因为害怕遭到非议,我只在一次聊天中给一位好朋友介绍过项目的部分,在得到她的认可后,我倍感激励,并着手开发工作。不是她的支持与鼓励,或许我无法独自一人完成这个项目,后来的创新创造课我将这个项目介绍给更多的人,都要感谢她的支持和她给我的勇气。

0x02 基本原理

#第一部分

应用场景为电梯,当人在电梯外时可以通过手机连接到互联网,处于电梯内时却不行,所以工作流程就是:用户在进入电梯前点击手机APP上的“开始倒计时”按钮向服务器发送开始倒计时的指令,随后进入电梯,此时服务器读取设置好的倒计时阈值,如60秒,并开始执行倒计时。

由于电梯内无网络,故用户只能在到达目标楼层出电梯后才能点击手机上的“终止倒计时”按钮,向服务器发送停止指令。

服务器若在倒计时归零前也没有接收到来自用户的终止指令就判定用户已经在电梯内遭遇不测,可以开始根据预留的邮箱地址或手机号码通过电子邮件或者短信的形式分发遗书。

若服务器在倒计时归零前就接受到了停止指令就判定用户已经平安走出电梯,终止此次服务。

(图片详解如下)

#第二部分

和前一模块相似,仍然采用倒计时的机制,不过这一次,应用场景为日常生活。

服务器上主动运行着倒计时,倒计时时间为7天或半个月,每隔一段时间(必须小于7天或半个月)我就要登录上服务器手动重置倒计时以保证倒计时不会归零,因为一旦归零服务器就会认为我由于太久没有上线进行相关操作已死亡,立即执行遗书发送模块。

0x03 发送模块

发送模块仍然是用php开发的,接收到指令后服务器用数组+sleep()的方式生成阻塞式任务队列,从数据库拉取要发送的邮件的内容,拼接构造完整后全部添加到任务队列内等待发送,随后调用邮箱接口,向不同的邮箱地址发送不同的遗书内容,每个人收到的遗书内容有一部分是公共的,还有一部分是每个人专属的,就当是把最后没说的话给交代了吧。

0x04 后记

遗书自动发送还是太难听,换了个名字叫时光书信。

——阿毛

发表评论

邮箱地址不会被公开。 必填项已用*标注