THINKPHP+TASKPHP实现后台定时任务,通过接口抓取数据并存入数据库
物联网云平台一般都带有API接口可以实现设备及数据的自有服务器的存储以及支持对自身业务实现的更好扩展,笔者前段时间接触比较多的是有人云、TLINK,以及阿里云,ONENET,通过TASKPHP实现TLINK平台数据的抓取,定时任务,以前有人云的数据抓取、业务扩展。
- TASKPHP的composer安装
- command.php的修改
- taskphp的任务配置,crontab表达式的编写
- 具体任务操作逻辑的编写
- php think start 定时任务的启动
注意事项:
- worker_memory任务进程的最大内存配置,如果抓取任务中数据量比较大需要配置比较大的内存,不然会出错
- 采用supervisor来管理进程,重启容易有重复的worker进程,造成数据抓取的重复
- 后台任务运行 nohup php think start getdata &
- API接口TOKEN的获取、超时重取等
- 在TP5的command中可以直接采用TP的数据库操作等功能
- 采用了tp5的chunk进行分批处理
- HTTP请求采用了 Guzze库,PHP还是有不少好用的库的
执行php think start出错提示 No such file or directory
原因:该脚本文件格式是 dos 格式 而非 unix 格式。 可以用 vim 查看或修改文件格式,命令如下 vim ./file :set
ff // 查看 :set ff=unix // 设置文件格式为 unix- fopen要开启