计划任务

html

计划任务

  有些任务代码是需要定时访问的,所以需要借用系统的计划任务功能。如果不配置计划任务,可能会出现频道内容不推荐、榜单不更新、订单不自动完成等问题。所以必须配置计划任务。


  所需要的计划任务写在了[**附录1**](https://www.yuque.com/thisky/ulwd0g/ooc24l#InSAu)里


  接下来以该计划任务为示例

一、宝塔

  宝塔控制面板自带了计划任务的入口,可以直接在面板里进行操作。

二、Linux

   如果您的服务器是Linux,但是没有安装宝塔或者是没有带计划任务功能的控制面板,就需要使用“corntab”命令。

1、安装corntab

   执行下面两条命令,安装相关程序。


   以下为centos命令,其他平台命令差不多,借助不同的工具。
yum install –y vixie-cronyum install –y crontabs

2、填写计划任务

输入 crontab –e,进入编辑页面


输入 
* * * * * /usr/bin/curl http://xxx.com/xxx
   关于上面“*”的解释

| # Example of job definition:# .---------------- minute (0 - 59)# | .------------- hour (0 - 23)# | | .---------- day of month (1 - 31)# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat# | | | | |# * * * * * user-name command to be executed | | --- |

  除了“*”还有以下的符号可以使用

| 星号(*):代表所有可能的值,如month字段为星号,则表示在满足其它字段的制约条件后每月都执行该命令操作。 逗号(,):可以用逗号隔开的值指定一个列表范围,例如,“1,2,5,7,8,9” 中杠(-):可以用整数之间的中杠表示一个整数范围,例如“2-6”表示“2,3,4,5,6”

正斜线(/):可以用正斜线指定时间的间隔频率,例如“0-23/2”表示每两小时执行一次。
  例:


       */30 * * * * /usr/bin/curl [http://xxx.com/xxx](http://xxx.com/xxx) 


       意思就是每隔30分钟访问下该链接


       PS:如果您对crontab熟悉的话,您可以自己添加其他的配置,如执行后写下日志。


       编辑好后,esc退出,:wq保存退出,然后执行 service crond restart 命令。

PS:不是很清楚怎么写计划任务的,可以看附录2

三、Windows(不推荐,仅限开发测试环境)

Windows需要使用Windows系统的“任务计划程序”。

1、写调用计划任务代码

创建一个php文件,根据下面的模板,写下计划任务。

| <?php$url = ''; curl_file_get_contents($url);

function curl_file_get_contents($url){ if (function_exists('curl_init')) { $ch = curl_init (); curl_setopt ( $ch, CURLOPT_URL, $url ); curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1 ); curl_setopt ( $ch, CURLOPT_POST, 1 ); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt ( $ch, CURLOPT_TIMEOUT, 60 ); $result = curl_exec ( $ch ); $result=json_decode($result,true); curl_close ( $ch ); return $result; } else { header("content-type:text/html;charset=utf-8"); echo('服务器尚未开启curl扩展,请联系您的主机商开启,本地调试请无视'); exit; }}echo 'success';
  其中$url里的值填写计划任务里给出的链接。

2、写执行计划任务命令

先创建一个txt文档,然后在该文档里填写以下模板内容。
d:\phpStudy\PHPTutorial\php\php-7.2.1-nts\php.exe -q d:\phpStudy\WWW\shop\plan.php
其中黄底的链接是服务器上所使用的php.exe的路径,绿底的链接是您写调用计划任务代码的php文件的路径。


然后保存,重命名下,将后缀“.txt”改成“.bat”。

3、设置计划任务

① 打开任务计划程序

打开“控制面板”-> “管理工具”->“任务计划程序”

② 创建任务

  1)创建任务,然后在“常规”栏里填写任务名称

  2)新建触发器


    开始的时间根据计划任务里的填写即可。如果计划任务涉及到了每多少时间(不足1天的)就需要开启“重复任务间隔”,持续时间填“永久”。

  3)新建操作


    选择写好的bat文件。

  4)确认保存


   上述3个步骤处理好后,计划任务就可以实现了。

附录1、计划任务

   1、commonapi/Script/Minute,每十分钟执行一次。


   2、commonapi/Script/Minutes,每一分钟执行一次。


   3、commonapi/Script/Hour,每小时执行一次。


   4、commonapi/Script/DayOne,每天凌晨一点执行一次。


   5、commonapi/Script/DayEight,每天早上8点执行一次。


   6、commonapi/Script/Week,每周日凌晨0点执行一次。

附录2、crontab相关计划任务代码

1、创建相关执行文件

  首先创建一个6份文件,其中代码里的“域名”需要替换成您后台网站的域名

minutes

TH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
curl -sS --connect-timeout 10 -m 45 '域名/commonapi/script/minutes'
echo "----------------------------------------------------------------------------"
endDate=`date +"%Y-%m-%d %H:%M:%S"`
echo "★[$endDate] Successful"
echo "----------------------------------------------------------------------------"

minute

TH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
curl -sS --connect-timeout 10 -m 60 '域名/commonapi/script/minute'
echo "----------------------------------------------------------------------------"
endDate=`date +"%Y-%m-%d %H:%M:%S"`
echo "★[$endDate] Successful"
echo "----------------------------------------------------------------------------"

hour

TH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
curl -sS --connect-timeout 10 -m 600 '域名/commonapi/script/hour'
echo "----------------------------------------------------------------------------"
endDate=`date +"%Y-%m-%d %H:%M:%S"`
echo "★[$endDate] Successful"
echo "----------------------------------------------------------------------------"

dayone

TH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
curl -sS --connect-timeout 10 -m 600 '域名/commonapi/script/dayone'
echo "----------------------------------------------------------------------------"
endDate=`date +"%Y-%m-%d %H:%M:%S"`
echo "★[$endDate] Successful"
echo "----------------------------------------------------------------------------"

dayeight

TH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
curl -sS --connect-timeout 10 -m 600 '域名/commonapi/script/dayeight'
echo "----------------------------------------------------------------------------"
endDate=`date +"%Y-%m-%d %H:%M:%S"`
echo "★[$endDate] Successful"
echo "----------------------------------------------------------------------------"

week

TH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
curl -sS --connect-timeout 10 -m 600 '域名/commonapi/script/week'
echo "----------------------------------------------------------------------------"
endDate=`date +"%Y-%m-%d %H:%M:%S"`
echo "★[$endDate] Successful"
echo "----------------------------------------------------------------------------"

2、编辑crontab

crontab里的/home/server/cron可以自行修改,然后service crond restart

*/1 * * * * /home/server/cron/minutes >> /home/server/cron/logs/minutes.log 2>&1
*/10 * * * * /home/server/cron/minute >> /home/server/cron/logs/minute.log 2>&1
3 * * * * /home/server/cron/hour >> /home/server/cron/logs/hour.log 2>&1
6 1 * * * /home/server/cron/dayone >> /home/server/cron/logs/dayone.log 2>&1
6 8 * * * /home/server/cron/dayeight >> /home/server/cron/logs/dayeight.log 2>&1
55 23 * * 6 /home/server/cron/week >> /home/server/cron/logs/week.log 2>&1
客服微信二维码
咨询客服小番茄
公众号二维码
扫码关注公众号