虚拟主机实现php定时任务,php虚拟主机下实现定时任务(仅供参考)

因为要做简单的中控  在实现心跳包的时候遇到了困难 正常的心跳包思路是这样的  举个例子 我写一个登陆签到脚本   当我登陆成功的时候 会把登陆成功这个状态传递给网络上的中控端 当我签到完成的时候会把签到成功的脚本状态传递给网络上的中控端 这样 我们在中控那边就可以清晰的看到当前脚本运行到哪个部分 如果脚本停止 以安卓按键为准会触发一个  OnScriptExit 事件  我们只需要在这个事件里面写上代码  当触发这个事件的时候 我们就给中控端发送下脚本状态为close 或者stop的状态信息 中控端就可以清楚脚本当前具体是处于什么状态 但是这个只是理想化状态   因为 有的时候脚本未必是正常关闭的 这样会导致 在中控端 因为迟迟收不到脚本的最新消息  当前脚本状态无法变化  看起来还在运行 但是实际上已经脚本崩溃导致问题,后来想到了心跳包  就是多开1个线程 间隔一会就向中控端发送信息 来让中控端知道 我这个脚本还在运行 如果超出一定时间内 中控端再也没接收到这个脚本的心跳包 那么中控端就会判定该脚本已经关闭

要解决的问题:从实际上来说 我们中控端有一个额外的操作 就是 间隔一定的时间 就搜索下数据库里面 所有的脚本记录 看看每个记录的最新记录时间和当前时间 相差多少 如果相差太多 就直接让这个记录对应的脚本状态设置了close或者stop  保证应对脚本异常关闭的情况 这也是这个文章的主要要解决的问题

思路:因为是虚拟主机 不是真正的主机 如果是真正的主机 那么可以考虑的办法相当的多 也无需像我这样费尽心机 比如可以用主机系统的计划任务来定时执行某些数据库操作 也可以用mysql的超级管理员的一些功能来实现定时任务  。百度了下 获得了一些基本思路 这些思路无非就是使用 ignore_user_abort(); //函数设置与客户机断开是否会终止脚本  set_time_limit(0); 实现一个无限死循环  在这个死循环里面 我们可以通过sleep进行适当的延迟间隔 来进行一定的操作  但是当我实际的来写代码的时候发现一些原来没有考虑过的问题

产生的新问题:

1.我们访问一次这

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值