为了账号安全,请及时绑定邮箱和手机立即绑定

大佬们遇到过这个问题吗?商品自动如何上架?

大佬们遇到过这个问题吗?商品自动如何上架?

蛊毒传说 2019-07-27 00:15:09
现在有这样一个需求,就是后台发布商品,不是立即上架,而是设定一个时间,到时间自动上架!我现在有两种想法。第一种方法:后台发布商品时,把设定上架的时间转换为unixtime,比如:1559192131然后,再用zadd写入到redis中$key='auto:publish';$time=1559192131;$data=['goodsId'=>1,'expire'=>1559195131,];$redis->zAdd($key,$time,json_encode($data));然后,用swoole起一个定时任务从zset中拿第一条数据,再对比时间是否达到自动发布的条件!如果自动发布了,就把第一条删除!第二种方法:就是直接向redis写入list数据$redis->rPush($key,json_encode($data));然后用swoole定时的去消费这个list$data=$redis->lPop($key);如果到了上架时间,就上架,如果没到,再把数据写到list中!我感觉这两种方法都不是太好,大神们有没有更好的解决办法?
查看完整描述

2 回答

?
牛魔王的故事

TA贡献1830条经验 获得超3个赞

其实楼上答案我觉得都可以实现,但是你可以换思路,比如商品在加入数据库的时候就有个设置,例如,status=1是正常发布的商品,status=2是定时上线下线的商品,这个时候就要判断现在是不是可以展示的商品了,sql如
select*fromgoodswherestatus=1unionallselect*fromgoodswherestatus=2andonline_time>=XXXXandoffline_time
                            
查看完整回答
反对 回复 2019-07-27
?
犯罪嫌疑人X

TA贡献2080条经验 获得超4个赞

加个where就行了啊。
后台配置一个上架时间下架,online_time=0立即上架,online_time=time()未来上架,online_time>time()
$sql='select*fromgoodswhereonline_time>0andonline_time<='.time();
                            
查看完整回答
反对 回复 2019-07-27
  • 2 回答
  • 0 关注
  • 311 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信