场景: 用户创建一个招标项目,设置了招标开始时间,当时间达到时,自动开启招标项目,让前台用户可以进行投标. 问题: 当用户发布一个招标项目后,如何在添加招标项目function里面同时调用添加一个定时器,项目访问量不大,单进程即可满足.
能帮忙成功实现的本人单独发红包,谢谢.
招标项目开启时需要主动发送信息通知什么的吗?还是说只是别人打开页面显示的是已经可以投标了?
如果是前者,程序启动时,你添加一个循环跑的定时器,每一分钟跑一次,就是遍历所有是未开始状态并且时间已经达到开始时间的任务(查询条件类似 status=0 AND start_time<=time()),修改状态,发送消息就行了。
status=0 AND start_time<=time()
如果是后者,实际上不需要用定时器之类的,你设计表的时候设计一个开始时间和状态,每次访问时,如果状态是未开始,并且时间已经达到开始时间,就将状态设为已开始就行了。
为每一个项目添加一个定时器不适用于你这个场景,这种情况,你还得考虑程序重启后的场景,如果未开始的项目多了,那又得多少个计时器。
illuminate/database或者think-orm的模型,都有获取器和计算属性; 可以利用获取器和计算属性,在获取列表或者获取详情时,动态计算当前的招投标是否开始,返回给前端。
招标项目开启时需要主动发送信息通知什么的吗?还是说只是别人打开页面显示的是已经可以投标了?
如果是前者,程序启动时,你添加一个循环跑的定时器,每一分钟跑一次,就是遍历所有是未开始状态并且时间已经达到开始时间的任务(查询条件类似
status=0 AND start_time<=time()
),修改状态,发送消息就行了。如果是后者,实际上不需要用定时器之类的,你设计表的时候设计一个开始时间和状态,每次访问时,如果状态是未开始,并且时间已经达到开始时间,就将状态设为已开始就行了。
为每一个项目添加一个定时器不适用于你这个场景,这种情况,你还得考虑程序重启后的场景,如果未开始的项目多了,那又得多少个计时器。
illuminate/database或者think-orm的模型,都有获取器和计算属性;
可以利用获取器和计算属性,在获取列表或者获取详情时,动态计算当前的招投标是否开始,返回给前端。