Table des matières
回复内容:
你的问题是不是拍了后半小时没付款就删除,如果是的话,以下几点思路你可以看看
Maison développement back-end tutoriel php 大量过期订单的处理问题

大量过期订单的处理问题

Jun 06, 2016 pm 08:18 PM
crontab php rabbitmq

  1. 描述你的问题
    最近开发遇到一个大量订单过期处理的问题,比如我拍了一个商品,半个小时之后他就不能付款了或者这个订单应该被删除掉。

第一、反应是crontab,但是考虑到每次都要去查mysql,感觉会影响效率;
第二、有人提示我用消息队列rabbitmq,但是我看了半天感觉消息队列好像没啥用,我感觉逻辑还是拍下订单的时候发送消息,然后php进程一直在那sleep?估计是我理解的不够透彻,求大神解释下相关流程。
第三、还有其他方法么?大神给个具体点的方案撒~

  1. 贴上相关代码

  2. 贴上报错信息

  3. 贴上相关截图

  4. 已经尝试过哪些方法仍然没解决(附上相关链接)

回复内容:

  1. 描述你的问题
    最近开发遇到一个大量订单过期处理的问题,比如我拍了一个商品,半个小时之后他就不能付款了或者这个订单应该被删除掉。

第一、反应是crontab,但是考虑到每次都要去查mysql,感觉会影响效率;
第二、有人提示我用消息队列rabbitmq,但是我看了半天感觉消息队列好像没啥用,我感觉逻辑还是拍下订单的时候发送消息,然后php进程一直在那sleep?估计是我理解的不够透彻,求大神解释下相关流程。
第三、还有其他方法么?大神给个具体点的方案撒~

  1. 贴上相关代码

  2. 贴上报错信息

  3. 贴上相关截图

  4. 已经尝试过哪些方法仍然没解决(附上相关链接)

低成本解决方案

插入订单的时候同时插入过期的时间

然后服务端用cli模式不断查询mysql数据库就行啊

建立mysql过期时间的索引 并不会影响效率

如果对运营成本有要去的话,可以通过用户触发模式来实现:

  1. 在拍完商品的同时设定"过期时间" datetime。

  2. 用户对该商品的任何更新都要同时更新"过期时间"。

  3. 每次用户登录后,读取相关商品的时候通过php对比当前时间(如果对时间要求严格,建议用JS对比时间)跟商品过期时间。如果过期了,可以通过css标识当前商品已经过期。同事发送请求到rabbitmq队列,因为读取商品的时候已经得到了该产品的ID,所以最好的列队信息是要包括这个ID。

  4. 后台有crontab定时读取rabbitmq并且根据已知的ID批量生产删除的mysql语句。

这种处理方法可以节省资源,减低无服务不必要的消耗,基本上就是一次读取,一次删除的数据库操作而已。非常不建议逐条删除,也建议逐条搜索mysql找出过期条目,最好是根据rabbitmq队列生产批量删除语句。

可以把订单存进redis 给redis设置过期时间

过期时间加索引,然后定时任务去处理,每次更新固定条数就好了。比如定时脚本每次启动,根据条件去查询,每次查1000条,更新状态为过期未付款,如果结果不足1000条或是没有结果,就说明不用查下一次了。

你的问题是不是拍了后半小时没付款就删除,如果是的话,以下几点思路你可以看看

  1. nosql,需要持久化的话就用redis,拍下就设定过期时间,到时间后自动删除(这种情况就适合用nosql特性),你前台程序需要进行判断。
    2.如果不允许用redis的话(就是用mysql类关系型数据库咯),也是拍下的时候设定过期时间戳,然后在订单相关页面手动进行是否过期(如果过期时间和订单在一个表,不会浪费资源啊,取多一个字段而已)

是我的理解错了吗,为什么需要crontab和消息队列??

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Article chaud

Repo: Comment relancer ses coéquipiers
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD
R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Article chaud

Repo: Comment relancer ses coéquipiers
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD
R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Tags d'article chaud

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Guide d'installation et de mise à niveau de PHP 8.4 pour Ubuntu et Debian Guide d'installation et de mise à niveau de PHP 8.4 pour Ubuntu et Debian Dec 24, 2024 pm 04:42 PM

Guide d'installation et de mise à niveau de PHP 8.4 pour Ubuntu et Debian

Date et heure de CakePHP Date et heure de CakePHP Sep 10, 2024 pm 05:27 PM

Date et heure de CakePHP

Configuration du projet CakePHP Configuration du projet CakePHP Sep 10, 2024 pm 05:25 PM

Configuration du projet CakePHP

Téléchargement de fichiers CakePHP Téléchargement de fichiers CakePHP Sep 10, 2024 pm 05:27 PM

Téléchargement de fichiers CakePHP

Routage CakePHP Routage CakePHP Sep 10, 2024 pm 05:25 PM

Routage CakePHP

Discuter de CakePHP Discuter de CakePHP Sep 10, 2024 pm 05:28 PM

Discuter de CakePHP

Guide rapide CakePHP Guide rapide CakePHP Sep 10, 2024 pm 05:27 PM

Guide rapide CakePHP

Comment configurer Visual Studio Code (VS Code) pour le développement PHP Comment configurer Visual Studio Code (VS Code) pour le développement PHP Dec 20, 2024 am 11:31 AM

Comment configurer Visual Studio Code (VS Code) pour le développement PHP

See all articles