PHP不依赖系统自动执行机制

不依赖系统,以及不依赖yii事物机制,则考虑人为触发。触发可以写在总体的公共页面上,但是考虑到对数据库以及WWW服务器的压力问题,程序的延迟问题,需要对执行函数进行一些优化。

首先,我们考虑对数据库的压力,每次点击页面,我们都让他触发监听系统,监听系统首先要判断此时是否需要更新我们的任务队列(任务队列我把他存在了缓存文件里),如果不需要更新,则只需要对缓存文件里的执行队列进行时间正排序,对已经超时的队列进行执行即可。但我们要考虑什么时候更新队列文件,以及如何更新,这样才能减轻系统压力。

我的思路是,首先,缓存文件可能会被人为删除或者超时失效,则每次先检测是否存在缓存文件(按任务/用户/类型进行分别生成缓存),如果不存在,重新查询数据库,生成缓存文件(已经超时的直接执行,执行不成功的再扔进缓存队列)。

接下来是每次访问,如果有缓存文件,先对文件中的超时任务处理,然后更新缓存文件。此时遇到一个问题,就是操作时对缓存队列的影响,可能我们会需要在缓存队列的开头或者中间的某个位置插入待执行队列,这时我们可以手动删除已存在的队列就好了,下一次触发时,由于找不到缓存文件,则会重新生成最新的缓存队列。

当我们执行完一个任务的时候,队列中的这个条目会删除,如果队列为空,则重新查询,生成队列,这样就能保证最小次数的访问数据库。还有一个问题,比如对订单自动确认收货的监控,如果是用户前台的更新,则需要同时删除此用户的缓存和该用户所属的后台管理员的缓存,这样才能保证相关人员在浏览这个订单的时候,看到的都是最新的状态。同理,后台管理员的修改订单,也应同时删除所有相关人员的缓存队列。

时间: 2024-12-17 23:11:52

PHP不依赖系统自动执行机制的相关文章

linux系统自动执行任务(转)

开机启动 开机启动应该是我们很经常的需求了,我们常需要在开机时就自动执行某些命令来开启服务,进程等,有了它我们不必再在每次开机时输入同一堆命令. chkconfig命令 使用chkconfig命令可以在设置在不同启动级别下启动特定的服务或是程序. 先说一下linux的运行级别: 等级0表示:表示关机 等级1表示:单用户模式 等级2表示:无网络连接的多用户命令行模式 等级3表示:有网络连接的多用户命令行模式 等级4表示:不可用 等级5表示:带图形界面的多用户模式 等级6表示:重新启动 chkcon

[Spark内核] 第35课:打通 Spark 系统运行内幕机制循环流程

本课主题 打通 Spark 系统运行内幕机制循环流程 引言 通过 DAGScheduelr 面向整个 Job,然后划分成不同的 Stage,Stage 是從后往前划分的,执行的时候是從前往后执行的,每个 Stage 内部有一系列任務,前面有分享過,任务是并行计算啦,这是并行计算的逻辑是完全相同的,只不过是处理的数据不同而已,DAGScheduler 会以 TaskSet 的方式把我们一个 DAG 构造的 Stage 中的所有任务提交给底层的调度器 TaskScheduler,TaskSchedu

第十三章 自动执行作业

一.控制前后台作业 jobs:列出当前环境的后台或暂停的作业 fg.bg.kill:控制指定的作业,作业用"%+作业号"来指定 nohup:运行一个即便账号logout都不会被kill,而是被init进程接管的作业 二.at命令--预指定单独一次的作业执行 #at [ -c | -k | -s -q Quene] [ -m ] [ -f File ] { -t Date | Time [ Day ] [ increment ] } 1)三种运行at命令的格式 a)#at Time co

【Spark】Spark应用执行机制

Spark应用概念 Spark应用(Application)是用户提交的应用程序.执行模式又Local.Standalone.YARN.Mesos.根据Spark Application的Driver Program是否在集群中运行,Spark应用的运行方式又可以分为Cluster模式和Client模式. 下面是Spark应用涉及的一些基本概念: Application:Spark 的应用程序,用户提交后,Spark为App分配资源,将程序转换并执行,其中Application包含一个Drive

cobbler系统自动安装运维工具

cobbler系统自动安装运维工具 1.1 Cobbler简介 ? ? ? ?Cobbler通过将设置和管理一个安装服务所涉及的任务集中在一起,从而简化了系统配置,相当于Cobbler封装了DHCP.TFTP.XINTED等服务,结合了PXE.kickstart等安装方法,可以实现自动化安装操作系统. ? ? ? ?Cobbler程序是python语言编写的,且提供了Cli和Web的管理形式. 1.2 Cobbler安装准备 [[email protected] ~]# cat /etc/cen

[转帖]实时流处理系统反压机制(BackPressure)综述

实时流处理系统反压机制(BackPressure)综述 https://blog.csdn.net/qq_21125183/article/details/80708142 2018-06-15 19:05:37 MasterT-J 阅读数 4808更多 分类专栏: 实时流处理 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/qq_21125183/article/details/8070

Linux自动执行任务

Linux自动执行任务 耗奇害死猫关注 2018.01.04 10:19:45字数 74阅读 142 单次执行用at和batch,周期性任务执行用crontab.任务执行结束后会将结果返回给发起人,通过邮件完成的.邮件位于:/var/spool/mail/user_name 单次执行任务:at,batch at at [OPTION]...TIME TIME表示方法: HH:MM[YYYY-mm-dd] noon(中午十二点),midnight(晚上十二点),teatime(下午四点) tomo

MYSQL 定时自动执行EVENT

MySQL从5.1开始支持EVENT功能,类似Oracle和MSSQL的定时任务job功能.有了这个功能之后我们就可以让MySQL自动的执行存储过程来实现数据汇总等功能了,不用像以前哪样手动操作完成了.下面我们来测试下,在MYSQL中如何自动执行指定存储过程,实现相关功能. 一.创建测试表CREATE TABLE EVENT_table(id INT auto_increment PRIMARY KEY NOT NULL,conent VARCHAR(80))ENGINE=INNODB DEFA

web项目启动时,自动执行代码

tomcat启动时自动执行,以下两种方法的执行时长,会计算在tomcat的启动时长里. 1.ServletContextListener web.xml配置<listener> <listener-class>com.yuan.framework.GreyClientInitListener</listener-class> </listener> 1 public class GreyClientInitListener implements Servle