最近做一个短信系统,要群发短信,具体是要从一张表查询出大概30w的数据插入另有一张表,因为数据量有点大所以直接操作页面会报事务超时(ssi框架)。
困扰了许久,最后想出一方案:用存储过程加多线程实现数据的查询和插入,另加入一个任务处理表监控本次批量短信发送的状态,发送完毕改变本次任务的状态为处理完成,具体步骤如下:
1,点击发送一批量短信,创建一个任务,任务状态为处理中;
2,页面直接返回结果页面,提示本次短信任务处理中,详情请查询任务处理;
3,同时调用一个线程,这个线程主要是调用数据库中的存储过程,进行数据的处理;
4,当数据处理完成时,改变本次任务状态为处理完毕,可以进行下一次发送;
5,如果没发送完成,任务保持处理中状态,发送下一次时,提示后台有正在处理的任务,不能发送。
记录一下,前事不忘后事之师。