html
有些任务代码是需要定时访问的,所以需要借用系统的计划任务功能。如果不配置计划任务,可能会出现频道内容不推荐、榜单不更新、订单不自动完成等问题。所以必须配置计划任务。
所需要的计划任务写在了[**附录1**](https://www.yuque.com/thisky/ulwd0g/ooc24l#InSAu)里
接下来以该计划任务为示例

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

如果您的服务器是Linux,但是没有安装宝塔或者是没有带计划任务功能的控制面板,就需要使用“corntab”命令。
执行下面两条命令,安装相关程序。
以下为centos命令,其他平台命令差不多,借助不同的工具。
| yum install –y vixie-cronyum install –y crontabs |
|---|
输入 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系统的“任务计划程序”。
创建一个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里的值填写计划任务里给出的链接。
先创建一个txt文档,然后在该文档里填写以下模板内容。
| d:\phpStudy\PHPTutorial\php\php-7.2.1-nts\php.exe -q d:\phpStudy\WWW\shop\plan.php |
|---|
其中黄底的链接是服务器上所使用的php.exe的路径,绿底的链接是您写调用计划任务代码的php文件的路径。
然后保存,重命名下,将后缀“.txt”改成“.bat”。
打开“控制面板”-> “管理工具”->“任务计划程序”

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

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

3)新建操作
选择写好的bat文件。

4)确认保存
上述3个步骤处理好后,计划任务就可以实现了。
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点执行一次。
首先创建一个6份文件,其中代码里的“域名”需要替换成您后台网站的域名

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 "----------------------------------------------------------------------------"
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 "----------------------------------------------------------------------------"
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 "----------------------------------------------------------------------------"
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 "----------------------------------------------------------------------------"
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 "----------------------------------------------------------------------------"
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 "----------------------------------------------------------------------------"
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

