加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

PHP如何实现订单的延时处理详解

发布时间:2021-04-04 10:02:36 所属栏目:编程 来源:网络整理
导读:营业需求 订单是我们在一般开拓中常常会碰着的一个成果,最近在做营业的时辰必要实现客户下单之后订单超时未付出自动打消的成果,刚开始确认了几种要领: 客户端到时刻哀求打消 处事端按时查询有没有必要打消的订单,然后批量处理赏罚 下单后建设按时器,延时处
副问题[/!--empirenews.page--]

营业需求

订单是我们在一般开拓中常常会碰着的一个成果,最近在做营业的时辰必要实现客户下单之后订单超时未付出自动打消的成果,刚开始确认了几种要领:

  • 客户端到时刻哀求打消
  • 处事端按时查询有没有必要打消的订单,然后批量处理赏罚
  • 下单后建设按时器,延时处理赏罚
  • 行使redis可能memcache存储,配置逾期时刻,自动删除

综合思量上述要领,第一种最先解除,由于假如客户把APP靠山榨取可能收集毗连榨取,那么就无法发给处事端哀求,订单就会一向是未处理赏罚状态;第二种要领行使的较量多,不外存在精确度的题目,尚有必要确认按时使命的周期,暂且列为后补要领;第四种要领存在的题目就是订单假如删除就是物理删除,无法统计未处理赏罚数据(虽然可以存redis时辰趁便存在mysql这样的数据库做持久存储然后用要领二按时处理赏罚)。

最终筹备行使要领三。

再确认行使要领3的时辰,因为行使的PHP这种开拓说话,以是想实现按时器成果必要借助Swoole可能workerman。因为Swoole是C开拓的扩展框架,机能方面必定较量好,就选了Swoole。

前期筹备

  • 行使Swoole起首必要在处事器上安装Swoole扩展,安装要领和安装其他扩展大同小异,可以参考这边文章
  • 安装完之后检测下扩展是否正常安装,查察phpinfo可能PHP-m,假如呈现Swoole,则声名安装乐成
  • Swoole官方文档有按时器的

开始测试

我们建设一个swoole_test.php文件和一个log.txt文件(用来测试),swoole_test.php代码如下:

然后在网页会见这个PHP文件,功效如下:

PHP怎样实现订单的延时处理赏罚详解

然后在Linux终端运行PHP:/usr/local/php7/bin/php /home/app/swoole_test.php,功效如下:

PHP怎样实现订单的延时处理赏罚详解

心田一阵。。。

原本按时器只能在cli模式下,那么这个设法怕是要GG了,莫非就栽倒这里了吗,莫非就没有此外要领了吗?就在我欲哭无泪的时辰溘然灵光乍现,一个词闪到我的脑海:Python!

对,我们不能单单靠着PHP啊,尚有Python这种神奇的说话呢,我们知道Python的os模块里的os.system要领是可以执行呼吁行的,那么不就可以实此刻cli模式下运行适才的swoole_test.php文件了么。

心田一阵感动后,认为测试是否可行

我们知道Linux都是自带Python的,可是差异的版本Python版本差异,有的自带的是Python2.6,版本过低了,以是必要装一个高版本的,这里我选择Python3,留意不要包围体系自带的Python2 。以下是大抵的安装步调:

  • wget http://python.org/ftp/python/3.6.0/Python-3.6.0.tar.xz
  • tar xf Python-3.6.0.tar.xz
  • cd Python-3.6.0
  • ./configure --prefix=/usr/local/python3
  • make && make install
  • ln -s /usr/local/python3/bin/python3 /usr/bin/python3

接下来终端输入:Python3,假如呈现

PHP怎样实现订单的延时处理赏罚详解

则安装乐成。

安装完Python3之后,我们新建一个test.py文件,内容如下:

然后我们在终端执行:/usr/bin/python3 /home/app/test.py,留意:这里只是执行PHP文件,可是文件里的echo内容是不会在终端输出的,这时辰就用到适才新建的log.txt文件了。执行完Python文件后,我们去log文件搜查下,发明内容已经写入,以是行使Python是可以实现PHP的cli模式的。┗|`O′|┛ 嗷~~

PHP怎样实现订单的延时处理赏罚详解

到这里就会有同窗迷惑了,你这行使Python实现了PHP的cli模式,可是怎么通过web长途会见呢?这个时辰就用到PHP的exec要领了,我们知道PHP的exec要领和Python的os.system要领一样是可以执行呼吁行呼吁的,以是我们可以新建一个test.php文件,内容如下:

"; (exec ($program)); echo "end
"; die;

然后我们通过网页会见test.php文件。功效如下:

PHP怎样实现订单的延时处理赏罚详解

然后去log文件搜查,发明也写入日记了,以是这个要领是可行的!

做到这里内心美滋滋的,不外老认为仿佛那边差池,终于终于意识到一个很傻逼的题目:既然PHP可以直接有呼吁行函数,为啥添枝加叶借助Python然后在用Python的函数呢?这不是脱了裤子放屁添枝加叶吗?

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读