背景:项目里需要配置个定时任务扫描订单数据表里的数据,将快要到期的订单标记出来,写到系统消息提醒表里。以前配置过crontab直接执行php脚本,然后一路全面向过程的方式将业务实现到底。最近项目用了thinkphp框架,想着框架对于数据操作封装的便利,就不想再单独下php脚本文件运行了。但是,在项目里写的controller控制器文件,配置到crontab里new之后调用对应方法完全没效果。折腾了一些时间,发现没弄好后,就果断放弃了,想到linux的命令wget。于是开始配置wget,将地址设为要执行的controller对应的地址,最终这种方式是可以的。但是,必须记得的是任务运行的controller最好继承一个基类,然后在基类的thinkphp初始函数_initialize里写上验证部分,这样可以尽量避免外部访问(可以验证访问ip是不是本机或者访问地址里带上username和pwd之类的)。

以上属于业务的说明,下面直接上代码

  1. 01 * * * * root wget -t 1 -T 0 -q --spider "http://localhost/tptest/index.php?c=timetask&a=get_sys_warm&visit_name=123456&visit_pwd=123456"

其中用到了wget命令几个参数:

-t : 连接次数(失败后重连)

-T: 连接时间设置(0不会超时)

-q: 安静模式 (不输出讯息)

--spider: 不下载任何资料

备注:有点问题的是这种属于web形式,虽然在访问的控制器里有ip和秘钥验证,但不确定会不会有什么安全隐患。

命令格式:

wget [参数列表] [目标软件、网页的网址]

-V,--version 显示软件版本号然后退出;

-h,--help显示软件帮助信息;

-e,--execute=COMMAND 执行一个 “.wgetrc”命令

-o,--output-file=FILE 将软件输出信息保存到文件;

-a,--append-output=FILE将软件输出信息追加到文件;

-d,--debug显示输出信息;

-q,--quiet 不显示输出信息;

-i,--input-file=FILE 从文件中取得URL;

-t,--tries=NUMBER 是否下载次数(0表示无穷次)

-O --output-document=FILE下载文件保存为别的文件名

-nc, --no-clobber 不要覆盖已经存在的文件

-N,--timestamping只下载比本地新的文件

-T,--timeout=SECONDS 设置超时时间

-Y,--proxy=on/off 关闭代理

-nd,--no-directories 不建立目录

-x,--force-directories 强制建立目录

--http-user=USER设置HTTP用户

--http-passwd=PASS设置HTTP密码

--proxy-user=USER设置代理用户

--proxy-passwd=PASS设置代理密码

-r,--recursive 下载整个网站、目录(小心使用)

-l,--level=NUMBER 下载层次

-A,--accept=LIST 可以接受的文件类型

-R,--reject=LIST拒绝接受的文件类型

-D,--domains=LIST可以接受的域名

--exclude-domains=LIST拒绝的域名

-L,--relative 下载关联链接

--follow-ftp 只下载FTP链接

-H,--span-hosts 可以下载外面的主机

-I,--include-directories=LIST允许的目录

-X,--exclude-directories=LIST 拒绝的目录

中文文档名在平常的情况下会被编码, 但是在 --cut-dirs 时又是正常的,

  1. wget -r -np -nH --cut-dirs=3 ftp://host/test/测试.txt
复制
  1. wget -r -np -nH -nd ftp://host/test/
  2. %B4%FA%B8%D5.txt
  3. wget "ftp://host/test/*"
  4. %B4%FA%B8%D5.txt
复制

由 於不知名的原因,可能是为了避开特殊档名, wget 会自动将抓取档名的部分用 encode_string 处理过, 所以该 patch 就把被 encode_string 处理成 "%3A" 这种东西, 用 decode_string 还原成 ":", 并套用在目录与档案名称的部分,decode_string 是 wget 内建的函式。

WGet使用指南

wget是一个从网络上自动下载文件的自由工具。它支持HTTP,HTTPS和FTP协议,可以使用HTTP代理.

所谓的自动下载是指,wget可以在用户退出系统的之后在后台执行。这意味这你可以登录系统,启动一个wget下载任务,然后退出系统,wget将在后台执行直到任务完成,相对于其它大部分浏览器在下载大量数据时需要用户一直的参与,这省去了极大的麻烦。

wget 可以跟踪HTML页面上的链接依次下载来创建远程服务器的本地版本,完全重建原始站点的目录结构。这又常被称作”递归下载”。在递归下载的时候,wget 遵循Robot Exclusion标准(/robots.txt). wget可以在下载的同时,将链接转换成指向本地文件,以方便离线浏览。

wget 非常稳定,它在带宽很窄的情况下和不稳定网络中有很强的适应性.如果是由于网络的原因下载失败,wget会不断的尝试,直到整个文件下载完 毕。如果是服务器打断下载过程,它会再次联到服务器上从停止的地方继续下载。这对从那些限定了链接时间的服务器上下载大文件非常有用。

wget的常见用法

wget的使用格式

Usage: wget [OPTION]... [URL]...

用wget做站点镜像:

  1. wget -r -p -np -k http://dsec.pku.edu.cn/~usr_name/
复制

# 或者

  1. wget -m http://www.tldp.org/LDP/abs/html/
复制

在不稳定的网络上下载一个部分下载的文件,以及在空闲时段下载

  1. wget -t 0 -w 31 -c http://dsec.pku.edu.cn/BBC.avi -o down.log &
复制

# 或者从filelist读入要下载的文件列表

  1. wget -t 0 -w 31 -c -B ftp://dsec.pku.edu.cn/linuxsoft -i filelist.txt -o down.log &
复制

上面的代码还可以用来在网络比较空闲的时段进行下载。我的用法是:在mozilla中将不方便当时下载的URL链接拷贝到内存中然后粘贴到文件filelist.txt中,在晚上要出去系统前执行上面代码的第二条。

使用代理下载

  1. wget -Y on -p -k https://sourceforge.net/projects/wvware/
复制

代理可以在环境变量或wgetrc文件中设定

# 在环境变量中设定代理

  1. export PROXY=http://211.90.168.94:8080/
复制

# 在~/.wgetrc中设定代理

  1. http_proxy = http://proxy.yoyodyne.com:18023/
  2. ftp_proxy = http://proxy.yoyodyne.com:18023/
复制

wget各种选项分类列表

启动

-V, --version 显示wget的版本后退出

-h, --help 打印语法帮助

-b, --background 启动后转入后台执行

-e, --execute=COMMAND 执行`.wgetrc'格式的命令,wgetrc格式参见/etc/wgetrc或~/.wgetrc

记录和输入文件

-o, --output-file=FILE 把记录写到FILE文件中

-a, --append-output=FILE 把记录追加到FILE文件中

-d, --debug 打印调试输出

-q, --quiet 安静模式(没有输出)

-v, --verbose 冗长模式(这是缺省设置)

-nv, --non-verbose 关掉冗长模式,但不是安静模式

-i, --input-file=FILE 下载在FILE文件中出现的URLs

-F, --force-html 把输入文件当作HTML格式文件对待

-B, --base=URL 将URL作为在-F -i参数指定的文件中出现的相对链接的前缀

--sslcertfile=FILE 可选客户端证书

--sslcertkey=KEYFILE 可选客户端证书的KEYFILE

--egd-file=FILE 指定EGD socket的文件名

下载

--bind-address=ADDRESS 指定本地使用地址(主机名或IP,当本地有多个IP或名字时使用)

-t, --tries=NUMBER 设定最大尝试链接次数(0 表示无限制).

-O --output-document=FILE 把文档写到FILE文件中

-nc, --no-clobber 不要覆盖存在的文件或使用.#前缀

-c, --continue 接着下载没下载完的文件

--progress=TYPE 设定进程条标记

-N, --timestamping 不要重新下载文件除非比本地文件新

-S, --server-response 打印服务器的回应

--spider 不下载任何东西

-T, --timeout=SECONDS 设定响应超时的秒数

-w, --wait=SECONDS 两次尝试之间间隔SECONDS秒

--waitretry=SECONDS 在重新链接之间等待1...SECONDS秒

--random-wait 在下载之间等待0...2*WAIT秒

-Y, --proxy=on/off 打开或关闭代理

-Q, --quota=NUMBER 设置下载的容量限制

--limit-rate=RATE 限定下载输率

目录

-nd --no-directories 不创建目录

-x, --force-directories 强制创建目录

-nH, --no-host-directories 不创建主机目录

-P, --directory-prefix=PREFIX 将文件保存到目录 PREFIX/...

--cut-dirs=NUMBER 忽略 NUMBER层远程目录

HTTP 选项

--http-user=USER 设定HTTP用户名为 USER.

--http-passwd=PASS 设定http密码为 PASS.

-C, --cache=on/off 允许/不允许服务器端的数据缓存 (一般情况下允许).

-E, --html-extension 将所有text/html文档以.html扩展名保存

--ignore-length 忽略 `Content-Length'头域

--header=STRING 在headers中插入字符串 STRING

--proxy-user=USER 设定代理的用户名为 USER

--proxy-passwd=PASS 设定代理的密码为 PASS

--referer=URL 在HTTP请求中包含 `Referer: URL'头

-s, --save-headers 保存HTTP头到文件

-U, --user-agent=AGENT 设定代理的名称为 AGENT而不是 Wget/VERSION.

--no-http-keep-alive 关闭 HTTP活动链接 (永远链接).

--cookies=off 不使用 cookies.

--load-cookies=FILE 在开始会话前从文件 FILE中加载cookie

--save-cookies=FILE 在会话结束后将 cookies保存到 FILE文件中

FTP 选项

-nr, --dont-remove-listing 不移走 `.listing'文件

-g, --glob=on/off 打开或关闭文件名的 globbing机制

--passive-ftp 使用被动传输模式 (缺省值).

--active-ftp 使用主动传输模式

--retr-symlinks 在递归的时候,将链接指向文件(而不是目录)

递归下载

-r, --recursive 递归下载--慎用!

-l, --level=NUMBER 最大递归深度 (inf 或 0 代表无穷).

--delete-after 在现在完毕后局部删除文件

-k, --convert-links 转换非相对链接为相对链接

-K, --backup-converted 在转换文件X之前,将之备份为 X.orig

-m, --mirror 等价于 -r -N -l inf -nr.

-p, --page-requisites 下载显示HTML文件的所有图片

递归下载中的包含和不包含(accept/reject)

-A, --accept=LIST 分号分隔的被接受扩展名的列表

-R, --reject=LIST 分号分隔的不被接受的扩展名的列表

-D, --domains=LIST 分号分隔的被接受域的列表

--exclude-domains=LIST 分号分隔的不被接受的域的列表

--follow-ftp 跟踪HTML文档中的FTP链接

--follow-tags=LIST 分号分隔的被跟踪的HTML标签的列表

-G, --ignore-tags=LIST 分号分隔的被忽略的HTML标签的列表

-H, --span-hosts 当递归时转到外部主机

-L, --relative 仅仅跟踪相对链接

-I, --include-directories=LIST 允许目录的列表

-X, --exclude-directories=LIST 不被包含目录的列表

-np, --no-parent 不要追溯到父目录

来源:http://www.shouce.ren/post/view/id/113297

crontab wget命令定时执行thinkphp的控制器实现定时任务相关推荐

  1. linux定时执行任务命令,crontab(linux下定时执行任务命令)

    在linux在可以通过在脚本里(列如sh)写如日常需要进行的操作,然后通过crontab定时运行脚本. Linux下的任务调度分为两类,系统任务调度和用户任务调度. 系统任务调度:系统周期性所要执行的 ...

  2. crontab+php-cgi/php 定时执行PHP脚本

    为什么80%的码农都做不了架构师?>>>    说到crontab ,一般是crontab+shell 组合来执行任务,在开发中可能有这类需要:每隔一段时间请求一个php页面. 有这 ...

  3. cgi+bin+php,crontab+php-cgi/php 定时执行PHP脚本

    说到crontab ,一般是crontab+shell 组合来执行任务,在开发中可能有这类需要:每隔一段时间请求一个php页面. 有这样的需求就得用到crontab了,稍微看了php命令行模式,网上搜 ...

  4. python scheduler 定时执行_python使用apscheduler做定时任务的管理

    工作中经常需要做一些定时任务,之前基本都是用crontab来定时执行脚本,python也有一个apscheduler方便进行定时任务的管理,所以我简单学习了下apscheduler的使用. Block ...

  5. 虚拟主机php定时执行任务,php虚拟主机定时任务(虚拟主机怎么设置cron计划)...

    在没有服务器完全控制权限的情况下,比如虚拟主机,有没有办法让PHP程序. 2一点的方式,自己用主机触发,像那些凌晨4-6点之间的任务比较不容易被触发,另外对于真实用户来说这个也比交友好 怎样定时执行某 ...

  6. crontab 奇数时间定时执行

    有二个脚本,a脚本是每1.3.5...(奇数分钟)执行一次,b脚本是每2.4.6...(偶数分钟)执行一次. crontab如何写? 设下时间段和步长. #crontab -e 1-59/2 * * ...

  7. mysql事件不定时执行_Mysql 中的事件//定时任务

    什么是事件 一组SQL集,用来执行定时任务,跟触发器很像,都是被动执行的,事件是因为时间到了触发执行,而触发器是因为某件事件(增删改)触发执行: 开启事件 查看是否开启: show variables ...

  8. centos 删除crontab_Centos7 利用crontab定时执行任务及配置方法

    crond是什么? crond 和crontab是不可分割的.crontab是一个命令,常见于Unix和类Unix的操作系统之中,用于设置周期性被执行的指令.该命令从标准输入设备读取指令,并将其存放于 ...

  9. 定时执行失败原因分析

    .脚本语法错误 在crontab脚本没有定时执行的时候,首先需要检查脚本的语法有没有出现问题. 2.环境变量问题 有时我们创建了一个crontab,但是这个任务却无法自动执行,而手动执行这个任务却没有 ...

最新文章

  1. flutter嵌入HTML5页面,Flutter加载Html并实现与JS 的双向调用
  2. python PyQt5.QtWidgets.QWidget.mouseMoveEvent()函数
  3. 安装Cocoapods详细教程
  4. Integer进制转换
  5. 华为云联合HarmonyOS发布智联生活行业加速器
  6. moosefs即将发布新版
  7. SpringBoot开发流程
  8. poj 1962 Corporative Network 并查集,很容易超时,大家要注意合并
  9. ModBus RTU协议CRC校验方式最简实现
  10. ffmpeg x264编码参数
  11. 陕西省计算机分数线,2019陕西省各大学录取分数线最新汇总
  12. 这十本书有望成为第四届橙瓜网络文学奖年度十大玄幻作品!
  13. html浏览xsd,那点你不知道的XHtml(Xml+Html)语法知识(DTD、XSD)
  14. 无法打开https网页终极解决方法
  15. 这只“鸭子不一般”科大讯飞申请“躺倒鸭”商标
  16. SQL Server numeric数据类型
  17. unity3d 锁定鼠标
  18. 深度学习实战(七)——目标检测API训练自己的数据集(R-FCN数据集制作+训练+测试)
  19. TM4C KEIL模板建立
  20. Python中文分词库——jieba的用法

热门文章

  1. 图片变成暗灰色的html,暗灰色的圆形按钮.html
  2. 单片机独立式按键c语言程序,(原创)51单片机C语言程序设计--速学教程实例(入门篇)之独立按键(查询)...
  3. 27.垃圾收集器(Serial收集器、ParNew收集器、Parallel收集器、Parallel Old 收集器、CMS收集器、G1收集器、常用的收集器组合)
  4. Java的calendar类用法
  5. Code Review工具Jupiter介绍
  6. php中函数声明的方法,PHP中的函数声明与使用
  7. python从零基础到项目实战 当当_Python 3.x网络爬虫从零基础到项目实战
  8. Caffe: Faster-RCNN Python版本配置 (Windows)
  9. 列表查询,添加功能---JSP,servlet
  10. RDIFramework.NET V3.3 Web版角色授权管理新增角色对操作权限项、模块起止生效日期的设置...