博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PHP 简单 延时任务
阅读量:5079 次
发布时间:2019-06-12

本文共 1004 字,大约阅读时间需要 3 分钟。

如果你想使用此方法必须满足以下条件:

1、您有crontab操作权限(目前某些虚拟主机也能做到,详情请检查你的控制面板);
2、您可以接受1~59秒的误差(crontab执行的最小间隔为1分钟)。

逻辑为在程序中把要延时执行的数据保存到一个www文件夹外的一些文件中,并以生成时的时间戳命名,用crontab定时任务定时运行一个shell脚本扫描文件夹,如果文件夹中存在比现在的时间戳小的文件名,即有已经过时的文件,即立即运行一个PHP文件来对这些文件进行处理。

首先,写一个shell脚步 test.sh

!/bin/bash#要读取的文件夹path="/home/cfucome/notification/file"#遍历文件夹,文件夹下的文件名为生成时的时间戳for file_a in ${path}/*; do     temp_file=`basename $file_a`      #当前时间戳    now_time=$(date +%s)        #如果文件名小于当前时间戳,即执行PHP文件    if [ "$temp_file" -le "$now_time" ] ;then        $(php /home/cfucome/notification/test.php)        exit 0     fidone

此脚本的意思为:遍历path下的文件,如果此文件的文件名小于当前时间戳,即为已经过时,即执行test.php这个PHP文件

test.php中的代码:

//打开文件夹$handle = opendir('./file');//循环读取文件夹中的文件while($file = readdir($handle)){    //过滤文件名    if(strchr($file,'.'))    {        continue;    }    //如果文件名小于当前的时间戳,即读取文件中的数据,进行操作    if($file

然后新建一个crontab任务,每分钟或其他间隔执行一次:

/bin/bash /home/cfucome/notification/test.sh

用定时运行shell脚本这种方法的原因是,这样占内存比较小。

转载于:https://www.cnblogs.com/codercwm/p/10135056.html

你可能感兴趣的文章
948. Bag of Tokens
查看>>
Swift - 使用Core Data进行数据持久化存储
查看>>
IOS用CGContextRef画各种图形(文字、圆、直线、弧线、矩形、扇形、椭圆、三角形、圆角矩形、贝塞尔曲线、图片)...
查看>>
Android Application的使用及其生命周期
查看>>
【SVN】Linux下svn搭建配置全过程——初学者轻松上手篇
查看>>
spring ibatis整合
查看>>
光标格式Mac OS X快捷键(2)
查看>>
04Channel 与 ChannelPipeline
查看>>
Java Sax解析xml
查看>>
职业发展思考(二)
查看>>
线程详解
查看>>
ubuntu lfs
查看>>
如何提问
查看>>
MySQL 5.6 安装配置
查看>>
samba服务(1)
查看>>
js术语解释
查看>>
【转】如何使用VS 2013发布一个可以在Windows XP中独立运行的可执行文件
查看>>
一年后重翻javascript
查看>>
设置二级域名共享一级域名Cookie和删除共享Cookie
查看>>
iview-admin使用webpack打包之后发布报Uncaught SyntaxError: Unexpected token <
查看>>