php网站程序如何按照指定时间每日运行

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php网站程序如何按照指定时间每日运行相关的知识,希望对你有一定的参考价值。

因为是新闻采集系统,所以需要每天早晨6点左右去自动运行一下。谁有办法吗?

php计划任务(按指定时间来运行某个程序)
前一阵子遇到有一个程序要在某个时间点来运行,但想来想去也不知用那种方法来触发这个程序,第一个想到的时用JS配合PHP来现实,但没有实现成功,后来请教了一个高手说可以在操作系统里配置。在 Linux 中,我们经常用到 crond 服务器来完成这项工作。cron 服务器可以根据配置文件约定的时间来执行特定的作务。比如我们可以在配置文件中约定每天早上4点,对 httpd 服务器重新启动,这就是一个计划任务;windows 的计划任务我们大家都很熟悉。下面我要介绍的是网站计划任务(访问触发)。

第一个首先要解决的时谁来触发,我选择的是用前台页面来触发,
代码如下:
代码:<img src="visit.php?job=cron&t=1212880316" alt="" style="width:0px;height:0px;" />
t=1212880316//这个是时间

第二个要解决的时什么时侯运行,(具体的不讲了,把代码贴出)
代码://计划执行时间
if($job=='cron')
check_method();
//查询数据库的下一个时间是否小于现在的时间
if($maxrecord['deltemptime']<$nowtime['timestamp'])
$crondb = array();
//day为0为每日 week周 minute时间断 hour什么时侯开始
$rt['cron'] = array('day'=>'0','week'=>$config['cron_week'],'m'=>$config['cron_minute'],'hour'=>$config['cron_hour']);
$crondb[] = $rt;

foreach ($crondb AS $key => $cron_val)
//设置了允许分钟段
if (!empty($config['cron_minute']))
$m = explode(' ', $config['cron_minute']);

$m_now = intval(local_date('i',$nowtime['timestamp']));
if (!in_array($m_now, $m)) //不包含此分钟的跳出
continue;



/*执行任务*/
/*********此处是你写的任务***********************/
$next_time = get_next_time($cron_val['cron']);
$DB->query("UPDATE `maxrec` SET `deltemptime`=$next_time");

exit;
参考技术A 1、linux服务器下用crontab命令
crontab -e
把如下指令加进去,保存

10 6 * * * /usr/local/php/bin/php /home/wwwroot/caiji.php
上面crontab的意思是每天早上6点10分运行/home/wwwroot/caiji.php程序,/usr/local/php/bin/php是php执行路径。
crontab介绍:
crontab命令的功能是在一定的时间间隔调度一些命令的执行。在/etc目录下有一个crontab文件,这里存放有系统运行的一些调度程序。每个用户可以建立自己的调度crontab。

crontab命令有三种形式的命令行结构:

crontab [-u user] [file]

crontab [-u user] [-e|-l|-r]

crontab -l -u [-e|-l|-r] 第一个命令行中,file是命令文件的名字。如果在命令行中指定了这个文件,那么执行
crontab命令,则将这个文件拷贝到crontabs目录下;如果在命令行中没有制定这个文件,crontab命令将接受标准输入(键盘)上键入的命
令,并将他们也存放在crontab目录下。

命令行中-r选项的作用是从/usr/spool/cron/crontabs目录下删除用户定义的文件crontab;

命令行中-l选项的作用是显示用户crontab文件的内容。

使用命令crontab -u user -e命令编辑用户user的cron(c)作业。用户通过编辑文件来增加或修改任何作业请求。

执行命令crontab -u user -r即可删除当前用户的所有的cron作业。

作业与它们预定的时间储存在文件/usr/spool/cron/crontabs/username里。username使用户名,在相应的文
件中存放着该用户所要运行的命令。命令执行的结果,无论是标准输出还是错误输出,都将以邮件形式发给用户。文件里的每一个请求必须包含以spaces和
tabs分割的六个域。前五个字段可以取整数值,指定何时开始工作,第六个域是字符串,称为命令字段,其中包括了crontab调度执行的命令。

第一道第五个字段的整数取值范围及意义是:

0~59 表示分
1~23 表示小时
1~31 表示日
1~12 表示月份
0~6 表示星期(其中0表示星期日)

/usr/lib/cron/cron.allow表示谁能使用crontab命令。如果它是一个空文件表明没有一个用户能安排作业。如果这个文
件不存在,而有另外一个文件/usr/lib/cron/cron.deny,则只有不包括在这个文件中的用户才可以使用crontab命令。如果它是一
个空文件表明任何用户都可安排作业。两个文件同时存在时cron.allow优先,如果都不存在,只有超级用户可以安排作业。

2、windows服务器下
windows 的Schedule Task

.创建配置

1.点击“开始”

2.点击“控制面板”

3.双击“任务计划”

4.双击“添加任务计划”

5.到了“任务计划向导”界面,点击“下一步”

6.点击“浏览”选择需要定时运行的程序(exe文件,bat文件,com文件,sys文件)然后确定。

7.给此任务取个名称,也可以默认,并且选择多少时间段运行一次程序,点击“下一步”

8.选择什么时刻运行,开始运行日期。点击“下一步”

9.输入用户名,密码,确认密码,这样保证系统定时启动该程序,点击“下一步”

10.点击“完成”

二.修改配置,我们回到“任务计划窗口”,就可以看到刚才定制的任务了。如果我们在设置过程中,任务运行时间设置的还不是很详细,我们可以在当前窗口下,右键点击任务名称,选择属性,里面的“计划”面板有个高级,可以到那里面更详细的设置。

三.删除该任务就是右键点击选择删除了。

参考资料:
http://www.chinaunix.net/old_jh/6/271992.html
http://blog.csdn.net/usherhll/article/details/6681205本回答被提问者采纳
参考技术B 不知道你使用的是什么系统。

Linux中是有这么一个功能:例行性工作,简称,cron。这个一时间是说不明白的。还请你折磨些日子才行。

最简单的方法就如楼上的哥们所言:JS定时。但这种方法实用性不大,你得要开着电脑,想一下就知道不便之处了。

Linux的例行性工作是最好的,不过就要你去学会了,也不是太难。

每日一题 —— Java篇

在这个不断发展的信息化时代,各个领域各个专业的人才越来越拔尖,如何做

到在人群之中凸显出来就变得尤为重要,作为一名程序员对于算法要精通,尤

其想要入职大厂,没有扎实的基本功就是有机缘都不一定选你。

作为一名大二的小菜鸡,我想把自己的学习心得写出来,给刚开始学习的学弟

学妹们了解程序为什么是这样运行的。

欢迎各位前辈批评指正,我也努力学习!!!

在这里插入图片描述

1.在线编程网站

leetcode
在这里插入图片描述

2.每日一题 - 俩数之和

原题地址:俩数之和

以上是关于php网站程序如何按照指定时间每日运行的主要内容,如果未能解决你的问题,请参考以下文章

Nginx/Apache下如何禁止指定目录运行PHP脚本

如何将网站升级到 http2 php 应用程序

从网站上的 PHP 脚本运行 Java 类文件

转:基础篇|PHP如何解决网站大流量和高并发

php异步调试和线上调试网站程序

php版网站站打包程序配合webshell(原创)