PHP不依赖系统自动执行机制
不依赖系统,以及不依赖yii事物机制,则考虑人为触发。触发可以写在总体的公共页面上,但是考虑到对数据库以及WWW服务器的压力问题,程序的延迟问题,需要对执行函数进行一些优化。
首先,我们考虑对数据库的压力,每次点击页面,我们都让他触发监听系统,监听系统首先要判断此时是否需要更新我们的任务队列(任务队列我把他存在了缓存文件里),如果不需要更新,则只需要对缓存文件里的执行队列进行时间正排序,对已经超时的队列进行执行即可。但我们要考虑什么时候更新队列文件,以及如何更新,这样才能减轻系统压力。
我的思路是,首先,缓存文件可能会被人为删除或者超时失效,则每次先检测是否存在缓存文件(按任务/用户/类型进行分别生成缓存),如果不存在,重新查询数据库,生成缓存文件(已经超时的直接执行,执行不成功的再扔进缓存队列)。
接下来是每次访问,如果有缓存文件,先对文件中的超时任务处理,然后更新缓存文件。此时遇到一个问题,就是操作时对缓存队列的影响,可能我们会需要在缓存队列的开头或者中间的某个位置插入待执行队列,这时我们可以手动删除已存在的队列就好了,下一次触发时,由于找不到缓存文件,则会重新生成最新的缓存队列。
当我们执行完一个任务的时候,队列中的这个条目会删除,如果队列为空,则重新查询,生成队列,这样就能保证最小次数的访问数据库。还有一个问题,比如对订单自动确认收货的监控,如果是用户前台的更新,则需要同时删除此用户的缓存和该用户所属的后台管理员的缓存,这样才能保证相关人员在浏览这个订单的时候,看到的都是最新的状态。同理,后台管理员的修改订单,也应同时删除所有相关人员的缓存队列。
PHP不依赖系统自动执行机制的更多相关文章
- linux系统自动执行任务(转)
开机启动 开机启动应该是我们很经常的需求了,我们常需要在开机时就自动执行某些命令来开启服务,进程等,有了它我们不必再在每次开机时输入同一堆命令. chkconfig命令 使用chkconfig命令可以 ...
- Unity3.0基于约定的自动注册机制
前文<Unity2.0容器自动注册机制>中,介绍了如何在 Unity 2.0 版本中使用 Auto Registration 自动注册机制.在 Unity 3.0 版本中(2013年),新 ...
- [Spark内核] 第35课:打通 Spark 系统运行内幕机制循环流程
本课主题 打通 Spark 系统运行内幕机制循环流程 引言 通过 DAGScheduelr 面向整个 Job,然后划分成不同的 Stage,Stage 是從后往前划分的,执行的时候是從前往后执行的,每 ...
- 打通 Spark 系统运行内幕机制循环流程
本课主题 打通 Spark 系统运行内幕机制循环流程 引言 通过 DAGScheduelr 面向整个 Job,然后划分成不同的 Stage,Stage 是从后往前划分的,执行的时候是從前往后执行的,每 ...
- 【THE LAST TIME】彻底吃透 JavaScript 执行机制
前言 The last time, I have learned [THE LAST TIME]一直是我想写的一个系列,旨在厚积薄发,重温前端. 也是给自己的查缺补漏和技术分享. 欢迎大家多多评论指点 ...
- 解决Debina系统自动更新软件包的问题
不知从何时开始,我的电脑每天开机连接上网络之后,不断的在下载数据,状态栏显示网速达到每秒1到2兆.开始我还不太在意,不过后来由于带宽全部被这种莫名其奥妙的下载占据了,我连网页都无否正常浏览了,所以我决 ...
- [转帖]实时流处理系统反压机制(BackPressure)综述
实时流处理系统反压机制(BackPressure)综述 https://blog.csdn.net/qq_21125183/article/details/80708142 2018-06-15 19 ...
- Linux自动执行任务
Linux自动执行任务 耗奇害死猫关注 2018.01.04 10:19:45字数 74阅读 142 单次执行用at和batch,周期性任务执行用crontab.任务执行结束后会将结果返回给发起人,通 ...
- 探索JavaScript执行机制
前言 不论是工作还是面试,我们可能都经常会碰到需要知道代码的执行顺序的场景,所以打算花点时间彻底搞懂JavaScript的执行机制. 如果这篇文章有帮助到你,️关注+点赞️鼓励一下作者,文章公众号首发 ...
随机推荐
- jQuery 遍历
.add() add() 方法将元素添加到匹配元素的集合中 .add(selector)//字符串值,表示查找供添加到匹配元素集合的元素的选择器表达式. .add(elements)//添加到匹配元素 ...
- 《University Calculus》-chape10-向量和空间几何学-叉积
叉积概念的引入: 在平面中我们为了度量一条直线的倾斜状态,为引入倾斜角这个概念.而通过在直角坐标系中建立tan α = k,我们实现了将几何关系和代数关系的衔接,这其实也是用计算机解决几何问题的一个核 ...
- Django教程:第一个Django应用程序(4)
Django教程:第一个Django应用程序(4) 2013-10-09 磁针石 #承接软件自动化实施与培训等gtalk:ouyangchongwu#gmail.comqq 37391319 #博客: ...
- javascript 函数参数
1.javascript函数参数的个数以及类型没有强制规定,调用时不必严格按照函数的参数或类型,函数的参数只是在调用函数的时候提供了便利,但不是必须的! 2.参数在javascript内部是用数组ar ...
- ImageView类简介
4.8 图片控件 本节将要介绍的是图片控件ImageView,首先对ImageView类进行简单介绍,然后通过一个案例来说明ImageView的用法. 4.8.1 ImageView类简介 Ima ...
- 小白学phoneGap《构建跨平台APP:phoneGap移动应用实战》连载四(使用程序载入事件)
在了解了PhoneGap中都有哪些事件之后,本节将開始对这些事件的使用方法进行具体地介绍.本节要介绍的是程序载入事件,也就是deviceready.pause和resume这3个事件. [范例4-2 ...
- shell 验证ip
#!/bin/bash function isIp(){ IP=$ ];then echo "Wrong IP!" exit else a=`echo $IP | awk -F . ...
- Android ADT离线更新办法
Troubleshooting ADT Installation If you are having trouble downloading the ADT plugin after followin ...
- [RxJS] Combination operator: withLatestFrom
Operator combineLatest is not the only AND-style combinator. In this lesson we will explore withLate ...
- Qtcreator中经常使用快捷键总结
Qtcreator中经常使用快捷键总结 F1 查看帮助 F2 跳转到函数定义(和Ctrl+鼠标左键一样的效果) Shift+F2 声明和定义之间切换 F4 ...