- 浏览: 171526 次
- 来自: 深圳
文章分类
最新评论
-
GGGGeek:
MySQL5.7.24varchar(65532)报错:107 ...
int(11)最大长度是多少,MySQL中varchar最大长度是多少?
linux
下crontab调度命令定时执行
PHP
脚本 /
php
文件定时执行
网上随便搜索也
N
多相关资料了,这里就讲下
PHP
程序开发人员需处理的问题。先看下面一行:
*/2 2
0-22 *
*
*
/
bin/sh /
usr/local/web/worksh/cron_env.sh /
usr/local/php/bin/php
/
usr/local/web/mycrontab.php
p
ara_val1
p
ara_val2
(注:每个蓝色加粗字母或
/
前有一个半角空格;另:
p
ara_之间无空格,显示问题
)
这一行看起很长,可以按
5
小节处理,一节节理解;
1>
:
*/2 2
0-22
*
*
*
/
bin/sh
---------
linux
系统
运行定时器文件的时间(五个
*
号,中间有空格)和调度命令(
/
bin/sh
)
五个星(
*
)号分别代表的意义是:分 时 日 月 周 命令
* —
分钟,从
0
到
59
之间的任何整数
* —
小时,从
0
到
23
之间的任何整数
* —
日期,从
1
到
31
之间的任何整数(如果指定了月份,必须是该月份的有效日期)
* —
月份,从
1
到
12
之间的任何整数(或使用月份的英文简写如
jan
、
feb
等等)
* —
星期,从
0
到
7
之间的任何整数,这里的
0
或
7
代表星期日(或使用星期的英文简写如
sun
、
mon
等等)
写法:
*
(星号)表“所有”,
/
(斜杠)表“每隔”,
-
(横杠)表“到”,
,
(英文逗号)表“第”
范例:
0 10,12 * * * /usr/bin/backup
每天
10
点和
12
点执行文件备份;
*/2 2
0-22 *
*
*
/
bin/sh
在每天
20
:
00
到
22
:
00
之间每
2
分钟执行一次
sh
命令;
0
5
-11/2
8
* mon,wed
/
bin/sh
每个月的
8
号和每个礼拜的礼拜一和礼拜三的早上
5
点到
11
点每隔二小时执行一次;
25 3 1,10,22 * * /etc/init.d/apache2 restart
每月
1
、
10
、
22
日的
3 : 25
重启
apache
;
/
bin/sh
调度命令
表示要执行的任务(可以使运行
linux
系统命令
,
也可以是执行你自行编写的
linux
脚本命令)
2> : / usr/local/web/worksh/cron_env.sh 调度命令的执行程序路径(本处为 linux 系统中 sh 的路径)
3>
:
/
usr/local/php/bin/php
第
4
小节文件(本处为
PHP
文件)的执行程序解析文件(或叫编译)
4>
:
/
usr/local/web/mycrontab.php
定时器程序文件(你自己站点或应用的文件)路径
5>
:
p
ara_val1 p
ara_val2
程序文件参数值
(如
web
的
URL
参数一样)(本处为带了
p
ara_val1 p
ara_val2
二个值)
再啰嗦一句:如果 PHP 里要获取这二个值,可以用 $argv[1] 获取第一个值, $argv[2] 获取第二值;
程序开发人员的工作,稍微大点的公司,都不会让你去做运维的事情,所以,理解了上面这行,定时器就基本 OK 了,当然,在提交给运维的时候,别忘了告诉运维,你这程序要在哪台服务器上定时执行。
如果你是在大公司,公司服务器环境也是 linux ,那么下面的扩展知识,你就不用看了!
下面是应付小公司(
1
、公司服务器为非
linux
或者说无法跑
crontab
调度脚本的
2
、干脆就是买了代理服务器空间(新网,万网那种几百兆
XX
空间的),不能设置任何服务器脚本)
方法一:假定时器或叫触发式定时器(本人命名,如有雷同,纯属同一语文老师所教 ! )
如果,你的内容,更新量不大,也不要非常及时;可以在程序开头,写一个判断,(在 txt 或数据库中存储一个判断基数,判断时间),根据用户访问的当前时间,如果未更新,就执行 XX 定时更新文件,反之跳过。
方法二:通过设置
ignore_user_abort()
函数的有效期,来实现定时器PHP
脚本的连接执行(不需用户访问站点);
ignore_user_abort() 可以实现当客户端关闭后仍然可以执行 PHP 代码,可保持 PHP 进程一直在执行,可实现所谓的计划任务功能与持续进程,只需要开启执行脚本,除非 apache 等服务器重启或有脚本有输出,该 PHP 脚本将一直处于执行的状态,初看很实用,不过代价是一个 PHP 执行脚本的持续进程,开销很大,如果你是买的那种 100M 空间,很可能会被服务器管理人员关掉或因他们重启 appache 导致脚本不再执行,所以你应该跟方法一结合使用,到用户访问时,判断这个连接是否正常,如果不正常再次开启;
1> 每隔 15 分钟循环执行
<?php
ignore_user_abort();
set_time_limit(0);
$interval=60*15;
do{
// 执行的业务
}while(true);
?>
自定义实现输出 log 并跟踪 ignore_user_abort() 函数的执行结果
|
<?php ignore_user_abort ( TRUE ); set_time_limit ( 0 ); $interval = 10; $stop = 1; do { if( $stop == 10 ) break; file_put_contents('ignore.log',' Current Time: '.time().' Stop: '.$stop); $stop++; sleep ( $interval ); } while ( true ); ?> |
打开 ignore . log 文件,文件内容如下:
Current Time: 1338878338
Stop: 9
其原理是即使客户端终止脚本,仍然每隔
10
秒钟执行一次,并打印出当前时间与终止点,这样就可以测试出
ignore_user_abort()
函数的具体效果。
if( connection_status () != CONNECTION_NORMAL )
判断是否正常连接。
发表评论
-
PHP+MYSQL大小写问题
2014-11-21 11:33 1589[PHP]一、大小写敏感 1. 变量名区分大小写 所有变 ... -
php基础知识之 ---- echo、print_r、var_dump、调试输出
2014-04-29 18:19 0。。。。。。。。 -
php基础知识之 ---- 过滤、防sql注入
2014-04-29 18:13 0。。。。。。。 -
php基础知识之 ---- 错误处理、异常、错误日志
2014-04-29 18:11 0。。。。。。。。 -
php基础知识之 ---- include 、 require、常量应用
2014-04-29 18:09 0。。。。。。。 -
php基础知识之 ---- 发邮件
2014-04-29 18:05 0。。。。。。 -
php基础知识之 ---- 日期时间
2014-04-29 18:04 0。。。。。。。 -
php基础知识之 ---- 权限及web访问权限
2014-04-29 18:01 0。。。。。 -
php基础知识之 ---- 文件操作
2014-04-29 18:00 0。。。。。。。。。 -
php基础知识之 ---- Cookie
2014-04-29 17:58 0......... -
php基础知识之 ---- Session
2014-04-29 17:58 0..... -
php基础知识之 ---- 数组、foreach
2014-04-29 17:56 0...... -
php基础知识之 ---- 运算符、大数据取模/求余计算得到负数
2014-04-29 17:54 0在写代码的时候,发现对大数字进行%求余(取模)的时候,获得的 ... -
php基础知识之 ---- 三元运算、isset()、empty()
2014-04-29 17:51 0....... -
php基础知识之 ---- 字符串、变量、单引号、双引号
2014-04-29 17:44 0。。。。。。 -
带BOM的utf-8,用json_decode() 返回null的问题 --- 超过3个bom字符
2014-03-17 12:01 2590PHP中file_get_contents函数获取URL文件 ... -
Parse error: syntax error, unexpected '}'
2014-02-12 17:53 1543Parse error: syntax error, une ... -
超实用的PHP代码片段
2013-11-22 15:48 890一、查看邮件是否已被阅读当你在发送邮件时,你或许很想知道该 ... -
8 个PHP功能开发
2013-10-28 17:10 10251、传递任意数量的函数参数 我们在.NET或者JA ... -
三个超好用的PHP加密解密函数
2013-10-28 16:24 4163三个超好用的PHP加密解密函数,貌似是discuz里的…使用 ...
相关推荐
Linux下定时执行脚本的设置,作了具体的用法说明。
执行clickhouse的sql文件的脚本。 ~~~ 脚本执行命令如下: ~~~ sh backup-ch.sh ip port user password db chdir(clickhouse...支持crontab定时调度。 ~~~ 适用于clickhouse-19之后的所有版本。 ~~~ 后期提供免费升级。
clickhouse万能自动备份脚本。 脚本执行命令如下: sh backup-ch.sh ip port user ...支持crontab定时调度。 支持全库备份,备份压缩,节省服务器空间。 适用于clickhouse-19之后的所有版本。 后期提供免费升级。
2.1cronsun crontab是Linux系统里面最简单易用的定时任务管理工具,在Linux上由crond来周期性的执行指令列表,执行的任务称为cron job,多个任务就称为crontab。crontab任务调度指令的基本格式为: * * * * * ...
避免流式传输前言:使用scala和java混编完成,其中也涉及到python脚本来自动生成日志,linux crontab调度工具来定时执行脚本生成实时日志。生成的数据主要是模拟某学习网站学习视频课程的访问量(其中*以“ / class...
目前发展中国家有足够的调度系统,例如oozie(太难用),xxl-job(太重量),气流(python写的,依赖linux的crontab,只能够部署在linux)上,你好工作致力于打造一个轻量级的,简单好用的跨平台调度系统,希望可以...
废话不多说了,直接给大家贴代码了,具体代码如下所示: #!/bin/sh #****************************************************************** ...# 2、脚本会自动写入crontab调度里面定时执行,crontab设置是
本人搜罗各大网站并测试了相关定时任务的操作方便... /etc/crontab 这个文件负责调度各种管理和维护任务。 /etc/cron.d/ 这个目录用来存放任何要执行的crontab文件或脚本。 我们还可以把脚本放在 /etc/cron.hourly
MySQL提供了Event Scheduler,与Linux下的crontab类似,可以根据时间调度来运行任务,运行一次或多次。 完整的Event Schduler创建语句如下: CREATE [DEFINER = { user | CURRENT_USER }] EVENT [IF NOT
动态壁纸:一个简单的bash脚本,可使用cron作业调度程序根据当前时间设置墙纸
保留了 Linux 原生的 Crontab 定时任务使用习惯,让运维同仁能够更平滑、快速的上手;更有贴心的监测功能助您发现及时掌握定时任务的动向和执行情况。 ### 高扩展性的文件源管理能力 在文件分发的需求场景中,我们...
如果使用其他操作系统,则必须创建自己的调度程序以运行脚本。 您还必须转到./src/data/*并使用本地项目目录更新每个python脚本。 要运行这些脚本,还需要一些其他依赖项: 项目组织 ├── LICENSE ├── ...
Crond是linux系统中用来定期执行命令/脚本或指定程序任务的一种服务或软件,一般情况下,我们安装完Centos5/6 linux操作系统之后,默认便会启动Crond任务调度服务。 Crond服务会定期(默认每分钟检查一次)检查系统...
1.1 Linux的兴起与发展 2 1.2 充分利用网上资源 3 1.2.1 Ubuntu官方网站 3 1.2.2 GNU网站 4 1.2.3 Linux文档项目网站 4 1.2.4 网上求助 5 1.3 随时查询随机文档 6 1.3.1 使用“--help”选项查询 命令的简单说明 6 ...
1.1 Linux的兴起与发展 2 1.2 充分利用网上资源 3 1.2.1 Ubuntu官方网站 3 1.2.2 GNU网站 4 1.2.3 Linux文档项目网站 4 1.2.4 网上求助 5 1.3 随时查询随机文档 6 1.3.1 使用“--help”选项查询 命令的简单说明 6 ...