让PHP文件每隔几秒执行一次
转自:http://www.blhere.com/966.html
背景是这样的:我需要一段PHP代码去定期对数据库操作,并把结果保存起来。如果方法是用户请求的时候来触发执行这个代码,显然用户的响应时间变长,影响用户体验!如果利用操作系统的定时任务,执行频率也是非常高的。
下面写个简单例子来讲解这个方法。
|
1
2 3 4 5 6 7 8 9 10 |
<?php
ignore_user_abort();//关闭浏览器仍然执行 );//让程序一直执行下去 ;//每隔一定时间运行 do{ $msg=date("Y-m-d H:i:s"); file_put_contents("log.log",$msg,FILE_APPEND);//记录日志 sleep($interval);//等待时间,进行下一次操作。 }while(true); ?> |
需要说明的是:程序没有写结束判断语句,他会无限循环下去。当然如果想停止的话,可以重启apache,重启后就无效了。想再次进行定时执行,那么把这段代码再一次运行。
上面简单例子可以说明这个原理。
那么针对上面的例子,我可以进行一下改良方案。
你需要一个执行脚本的开关,你可以用外部文件引入的方法来实现,在while循环的时候,include开关变量即可。那么就可以这样实现:
建立外部引入变量文件 switch.php 内容如下:
|
1
2 3 |
<?php
;//1执行脚本 0退出执行脚本 ?> |
改良脚本如下:
|
1
2 3 4 5 6 7 8 9 10 11 12 13 14 |
<?php
ignore_user_abort();//关闭浏览器后,继续执行php代码 );//程序执行时间无限制 ;//多长时间执行一次 $switch = include 'switch.php'; while($switch){ $switch = include 'switch.php'; $msg=date("Y-m-d H:i:s").$switch; file_put_contents("log.log",$msg,FILE_APPEND);//记录日志 sleep($sleep_time);//等待时间,进行下一次操作。 } exit(); ?> |
让PHP文件每隔几秒执行一次的更多相关文章
- php文件每隔几秒执行一次
说实话,linux 下面的crontab 任务完全可以实现所有的定时任务脚本,但是有些脚本只需要在一段时间内执行,过了这段时间之后,就不再执行定时脚本了.在使用crontab的时候,就需要人为的关闭掉 ...
- linux crontab & 每隔10秒执行一次
linux下定时执行任务的方法 在LINUX中你应该先输入crontab -e,然后就会有个vi编辑界面,再输入0 3 * * 1 /clearigame2内容到里面 :wq 保存退出. 在LINU ...
- oracle起定时任务,每隔1秒执行一次
创建一个测试表和一个存储过程: create table a(a date); create or replace procedure test as begin insert into a valu ...
- linux定时任务crontab 实现如何每秒执行一次!
linux crontab 命令,最小的执行时间是一分钟.如需要在小于一分钟内重复执行,可以有两个方法实现. Cron 各项的描述 以下是 crontab 文件的格式: {minute} {hour} ...
- Linux定时任务crontab每三秒执行一次shell
第一种方法:当然首先想到的是写一个触发的脚本,在触发脚本中使用死循环来解决此问题,如下: cat kick.sh #!/bin/bash while : ;do /home/somedir/scrip ...
- JavaScript-每隔5分钟执行一次ajax请求的实现方法
个页面好像只能有一个 window.onload=function(){},所以要有多个事件,这样写就好了 window.onload=function(){ //假设这里每个五分钟执行一次test函 ...
- (网页)js每隔5分钟执行一次ajax请求的实现方法(转)
转自脚本之家: 一个页面好像只能有一个 window.onload=function(){},所以要有多个事件,这样写就好了 window.onload=function(){ //假设这里每个五分钟 ...
- PHP定时器实现每隔几秒运行一次
php是服务器端脚本了并不像js那样有专业的settimeout函数来定时执行了,但只要浏览器不关闭各阶层是可以做到了,下面一起来看看. 下面写个简单例子来讲解这个方法. <?php ignor ...
- JVM菜鸟进阶高手之路六(JVM每隔一小时执行一次Full GC)
转载请注明原创出处,谢谢! 上次分析详细地址在:http://www.jianshu.com/p/a6236cd39e2d 以为上次问题是rmi的问题就此结束了,但是问题并没有结束,其实本次问题不是r ...
随机推荐
- Installing Node.js and Express on Ubuntu
Installing Node.js and Express on Ubuntu 1. 在nodejs官网上下载Linux Binaries(已经包含了npm):2. 安装Node.js下载后解压,并 ...
- 解决maven项目创建过慢的问题
关键就在这里:添加以下键值对 archetypeCataloginternal 之后点击Next,再单击Finish即可.
- non-identifying and identifying
An identifying relationship means that the child table cannot be uniquely identified without the par ...
- python在WIN下CMD运行中文乱码及python 2.x python 3.x编码问题
在CMD中运行python代码时,我们会发现,即使在代码中加入# -*- coding:utf-8 -*- 这段代码,中文仍然会乱码.如下: # -*- coding:utf-8 -*- conten ...
- C#解析字符串公式
/// <summary> /// 中缀表达式到逆波兰表达式的转换及求值 /// </summary> public class RpnExpression { #region ...
- H5C3--文本阴影text-shadow
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 用js实现base64编码器
base-64作为常见的编码函数,在基本认证.摘要认证以及一些HTTP扩展中得到了大量应用.在前端领域,也常常把图片转换为base-64编码在网络中传输.本文将详细介绍base64的原理及用js实现b ...
- Python科学计算生态圈--Pandas
- 集训队日常训练20180513-DIV2
A.2176 给一个字符串s,问距离为D的字母对是否存在相同. 模拟. #include<bits/stdc++.h> using namespace std; int main() { ...
- vue-router+iview(简单例子)
根据上面我们已经建立好的工程项目,我们来加入路由等方法. 首先修改我们的HelloWorld.vue,加入iview的Layout组件 第二步,建立两个我们对应路由的文件 <style scop ...