php获取数据方法(php定期拉取数据对比方法实例)
php获取数据方法
php定期拉取数据对比方法实例写在前面
今天在网上看帖子提问的时候,看到有人发表了一个提问
php下载远程的批量文件,每天一次,对比昨天和今天的文件,将旧文件替换成新文件
我们通过这个问题来分析讲解一下其中的知识点。
首先要解决的问题是:如何让程序每天自动执行一次脚本
php定时执行任务
关于定时执行,最常见的方法是利用系统级别自带的功能
- linux ( crontab 定时任务命令) windows计划任务
这需要手动修改系统的任务文件,然后使其生效
手动在linux添加定时任务
|
# crontab -e |
运行该命令 打开任务编辑 在其中输入任务内容,然后Esc :wq保存退出
任务示例
|
0 0 * * * /www/siam/test .sh |
前面的是运行周期的配置,后面的是sh脚本的路径,该方式一般需要自己编写sh脚本来执行
宝塔面板快速计划任务
如果我们使用宝塔面板当成运维工具,那么我们就可以很方便地添加计划任务了,如下图,宝塔中内置了挺多计划任务的类型,如定时请求URL,运行脚本,备份文件等等。
可视化配置,带给我们极大的便利,维护、添加都节约了很多的时间。
这也是为什么宝塔受到那么多人喜爱的原因之一吧。
宝塔面板计划任务的面板添加
取巧云监控定时执行
以上两种方式都需要服务器的权限,我们才可以管理定时任务,假设我们刚入门时使用的是虚拟主机,没有权限设置脚本运行,那么该如何实现这种功能呢?
这里记录了我以前学习时利用的一个小方案,大家可以在其中学习一下。
云监控,是很多云服务商提供的一项服务,它可以用来测试、分析接口或者网站的稳定性和执行效率。
我们可以在服务商的后台类似宝塔面板一样去添加任务,然后服务商就会按我们设置的频率,定期访问网址,获取网址的正确执行、时间等信息,记录到他们后台,提供给用户查看分析改进。
我们可以利用这种特性,由服务商向我们的服务发起请求,我们可以填写一个php脚本的url,在其中判断当前时间,如果当前时间周期已经到了你设置的时间,则执行下面的内容
同时因为云监控是不间断地发起(一般最细颗粒是30s) 如果不能重复运行的任务,我们需要及时地把任务标记为已经执行。
可以在本地写文件,当文件锁。
不同云监控服务商有不同的设置和服务提供,网上有挺多免费的。大家可以找一找,如果找不到好的,也可以联系我QQ交流一下。
现代化PHP
PHP发展了这么久,其实已经有了很大的改进,比如PHP5OOP特性的完善、PHP7的性能提高、Swoole生态的出现,让PHP能做的事越来越多,越做越好。
在当今环境中,我们可以使用SWOOLE常驻内存的特性完成很多事,
这里推荐一下EasySwoole这款基于Swoole环境的框架。
关于定时任务在EasySwoole框架中的文档地址点这里EasySwoole Crontab 定时器
常驻内存的程序,在服务器上后台稳定运行,
EasySwoole中提供了丰富的组件,比如传统PHPFPM环境很难解决的Mysql数据库连接池、协程Redis客户端、协程Http客户端、芒果DB客户端等等
还有我们这个主题有的一个定时任务的模块,下面看一小段demo代码
首先在主环境事件代码中开启定时任务
|
public static function mainServerCreate(EventRegister $register ) { // 开始一个定时任务计划 Crontab::getInstance()->addTask(TaskOne:: class ); } |
定时任务的配置和内容
|
namespace App\Crontab; use EasySwoole\EasySwoole\Crontab\AbstractCronTask; class TaskOne extends AbstractCronTask { public static function getRule(): string { // TODO: Implement getRule() method. // 定时周期 (每小时) return '@hourly' ; } public static function getTaskName(): string { // TODO: Implement getTaskName() method. // 定时任务名称 return 'taskOne' ; } static function run(\swoole_server $server , int $taskId , int $fromWorkerId , $flags =null) { // 定时任务处理逻辑 // 我们在这里执行拉取文件、对比处理、保存文件的逻辑就好了 var_dump( 'run once per hour' ); } } |
其他问题
解决了定时执行的问题,那么下载文件和保存文件,我觉得应该都不会是很大的问题
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对开心学习网的支持。
原文链接:https://www.siammm.cn/archives/183
- laravel怎么同时连接数据库(Laravel框架实现多个视图共享相同数据的方法详解)
- php数据错误处理函数(php中错误处理操作实例分析)
- mysql数据库丢失怎么办(MySQL 数据丢失排查案例)
- mysql分区表的优缺点(MySQL数据表分区策略及优缺点分析)
- 数据库知识点总结归纳(数据库日常练习题,每天进步一点点1)
- 如何将数据从View传递到控制器
- mysql显示所有数据库语句(MySQL数据库自动补全命令的三种方法)
- sqlserver备份还原地址(SqlServer高版本数据备份还原到低版本)
- 优化SQL语句,提高数据库的访问性能
- linq 数据类型转换
- SQL Server 数据库自动备份
- pandas 比较两个表数据是否相同(浅谈pandas筛选出表中满足另一个表所有条件的数据方法)
- python数据存取(python异步存储数据详解)
- sqlserver复制表结构及数据到新表(SQL SERVER 表与表之间 字段一对多sql语句写法)
- dataframe数据处理教程(对dataframe数据之间求补集的实例详解)
- sql导入数据库脚本(使用用SQL语句从电脑导入图片到数据库的方法)
- ()
- 张勇 阿里新任掌门人(阿里新任掌门人)
- 毛戈平全国第一柜花落银泰 高端国货迎来 高光 时刻(毛戈平全国第一柜花落银泰)
- 14岁丧父 20岁丧母,从苦难走向辉煌的银泰创始人沈国军(14岁丧父20岁丧母从苦难走向辉煌的银泰创始人沈国军)
- 银泰集团董事长沈国军获评 北京影响力 十大企业家(银泰集团董事长沈国军获评)
- 15帅气男士发型,清爽时尚很有型,喜欢就试试(清爽时尚很有型)
热门推荐
- dedecms怎么更换模板(DEDECMS解析模板之灵活应用视图类)
- css空白边叠加
- Javascript中apply、call、bind
- html5input标签的默认属性(移动端HTML5 input常见问题小结)
- setTimeout和setIntelval的用法和区别
- css3 图片样式处理(CSS3实现漂亮的照片墙效果的简单实例推荐)
- 详解如何获取localStorage最大存储大小的方法(详解如何获取localStorage最大存储大小的方法)
- 五分钟学会docker镜像与容器操作(Docker如何制作自己镜像并上传dockerhub)
- 阿里云免备案云虚拟主机(阿里云西部数码虚拟主机怎么屏蔽恶意点击ip?)
- php经典算法大全(php菜单/评论数据递归分级算法的实现方法)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9