PHP 、shell、crontab 执行定时任务
2017-06-23 13:53
375 查看
为了实现自动更新网站数据的功能,使用PHP 、shell、crontab 执行定时下载文件、读取文件并更新数据库。
一、思路
1、linux编写shell使用wget下载链接文件。
2、php读取下载的文件并存储数据到数据库。
3、使用linux crontab定时任务执行1、2步骤即可。
代码如下:
1、shell代码
2、PHP代码
3、定时任务
经过测试更新成功!
一、思路
1、linux编写shell使用wget下载链接文件。
2、php读取下载的文件并存储数据到数据库。
3、使用linux crontab定时任务执行1、2步骤即可。
代码如下:
1、shell代码
#!/bin/sh if #wget 下载文件并把文件按照日期重命名 wget -c http://www.****.cn/***/***C?type=productType -O /home/***/$(date -d "today" +"%Y%m%d")productType.txt -o /***/wget.log wget -c http://www.****.cn/***/***C?type=product -O /home/***/$(date -d "today" +"%Y%m%d")product.txt -o /***/wget.log #把下载好的文件复制到PHP项目中 cp /***/$(date -d "today" +"%Y%m%d")productType.txt /***/w***/default/****/upload/$(date -d "today" +"%Y%m%d")productType.txt cp /***/$(date -d "today" +"%Y%m%d")product.txt /***/upload/$(date -d "today" +"%Y%m%d")product.txt then echo "数据下载成功!">>/***/access.log; date +%Y%m%d%H%I%S>>/***/access.log else echo "数据下载失败!">>/***/error.log; date +%Y%m%d%H%I%S>>/***/error.log fi
2、PHP代码
<?php /** * Created by PhpStorm. * User: liang * Date: 2017/6/19 * Time: 15:59 */ $handler = mysql_connect("localhost", "root", "****"); mysql_select_db("****_products"); mysql_query("SET AUTOCOMMIT=0");//设置为不自动提交,因为MYSQL默认立即执行 mysql_query("BEGIN");//开始事务 if (empty($dopost)) $dopost = ""; $file = "upload/".date("Ymd",time()).'productType.txt'; $get = fopen($file, 'r');//mysql读取文件 if ($get) { $del = "DELETE FROM `#@__products_type`"; $js = $dsql->ExecuteNoneQuery($del); while (!feof($get)) { $oneline = fgets($get); $contents = explode("ξδθ", $oneline); $id = $contents[0]; $name = $contents[1]; $er = $contents[2]; $err = $contents[3]; if ($name == null || $err != null) { echo "本条数据格式不正确,上传失败" . '<br/>'; } else { echo $id . "|" . $name . '<br/>'; $inquery = "INSERT INTO `#@__products_type`(id,name) VALUES ('$id','$name')"; $dsql->ExecuteNoneQuery($inquery); } } } else { echo "更新产品类型失败!请使用“上传产品资料”功能更新数据!" . '</br>'; die; } $file = "upload/".date("Ymd",time()).'product.txt'; $fh = fopen($file, 'r'); if ($fh) { echo "内容为:" . '<br/>'; while (!feof($fh)) { $oneline = fgets($fh); $contents = explode("ξδθ", $oneline); $id = $contents[0]; $progress = $contents[1]; $testDepartmentID = $contents[2]; $ProductName = $contents[3]; $ProductModel = $contents[4]; $ProductType = $contents[5]; $ProductT 4000 ypeName = $contents[6]; $SendCompany = $contents[7]; $SendCompanyAddress = $contents[8]; $SendCompanyZIP = $contents[9]; $SendCompanyPhone = $contents[10]; $SendCompanyFax = $contents[11]; $SendCompanyAtificialPerson = $contents[12]; $ReportNo = $contents[13]; $ReportResult = $contents[14]; $XKZNo = $contents[15]; $XKZValidDate_Begin = $contents[16]; $XKZValidDate_End = $contents[17]; $deleted = $contents[18]; $er = $contents[19]; $err = $contents[20]; if ($deleted == null || $err != null) { echo "本条数据格式不正确,上传失败" . '<br/>'; } else { $row = $dsql->GetOne("SELECT id FROM `#@__products` WHERE ReportNo = '$ReportNo'"); $shuzu = $row['id']; echo $id . "|" . $progress . "|" . $testDepartmentID . "|" . $ProductName . "|" . $ProductModel . "|" . $ProductType . "|" . $ProductTypeName . "|" . $SendCompany . "|" . $SendCompanyAddress . "|" . $SendCompanyZIP . "|" . $SendCompanyPhone . "|" . $SendCompanyFax . "|" . $SendCompanyAtificialPerson . "|" . $ReportNo . "|" . $ReportResult . "|" . $XKZNo . "|" . $XKZValidDate_Begin . "|" . $XKZValidDate_End . "|" . $deleted . '<br/>'; if (!empty($shuzu)) { $update = "update `#@__products` SET id='$id',progress='$progress', testDepartmentID='$testDepartmentID', ProductTypeName = '$ProductTypeName', ProductName = '$ProductName', ProductModel = '$ProductModel', ProductType = '$ProductType', SendCompany='$SendCompany', SendCompanyAddress = '$SendCompanyAddress', SendCompanyZIP='$SendCompanyZIP', SendCompanyPhone = '$SendCompanyPhone', SendCompanyFax='$SendCompanyFax', SendCompanyAtificialPerson = '$SendCompanyAtificialPerson', ReportNo='$ReportNo', ReportResult = '$ReportResult', XKZNo='$XKZNo', XKZValidDate_Begin = '$XKZValidDate_Begin', XKZValidDate_End='$XKZValidDate_End', deleted = '$deleted' WHERE ReportNo = '$ReportNo' "; $dsql->ExecuteNoneQuery($update); } else { $inquery = "INSERT INTO `#@__products`(id,progress,testDepartmentID,ProductName,ProductModel,ProductType,ProductTypeName,SendCompany,SendCompanyAddress,SendCompanyZIP,SendCompanyPhone,SendCompanyFax,SendCompanyAtificialPerson,ReportNo,ReportResult,XKZNo,XKZValidDate_Begin,XKZValidDate_End,deleted) VALUES ('$id','$progress','$testDepartmentID','$ProductName','$ProductModel','$ProductType','$ProductTypeName','$SendCompany','$SendCompanyAddress','$SendCompanyZIP','$SendCompanyPhone','$SendCompanyFax','$SendCompanyAtificialPerson','$ReportNo','$ReportResult','$XKZNo','$XKZValidDate_Begin','$XKZValidDate_End','$deleted')"; $dsql->ExecuteNoneQuery($inquery); } } } mysql_query('COMMIT') or die(mysql_error());//执行事务 } else { echo "更新产品数据失败!请使用“上传产品资料”功能更新数据!"; mysql_query('ROLLBACK') or die(mysql_error());//回滚事务 } fclose($get); fclose($fh);
3、定时任务
每周五上午10点更新数据 *(分) *(时) *(日) *(月) *(周) [root@localhost]# crontab -l 00 10 * * 5 /home/****/***g.sh 05 10 * * 5 /usr/bin/curl http://www.****.net/****/***.php
经过测试更新成功!
相关文章推荐
- PHP 、shell、crontab 执行定时任务
- Linux下如何定时执行php脚本?Linux下如何设置定时任务?Crontab定时执行程序
- linux使用crontab实现PHP执行定时任务(转)
- Linux的crontab定时任务批量执行PHP脚本
- crontab中使用环境变量的方法(手动执行shell脚本可以,在定时任务中不行)
- linux使用crontab实现PHP执行定时任务
- linux使用crontab实现PHP执行计划定时任务
- centos linux 定时任务 定时每天执行php文件更新数据库 crontab
- linux使用crontab实现PHP执行计划定时任务
- crontab定时任务中不能执行python shell命令
- linux使用crontab实现PHP执行计划定时任务
- linux使用crontab实现PHP执行定时任务
- linux使用crontab实现PHP执行定时任务
- linux使用crontab实现PHP执行定时计划任务
- linux使用crontab实现PHP执行定时任务
- linux使用crontab实现PHP执行定时任务
- Linux定时任务Crontab执行PHP脚本
- Linux定时任务crontab每三秒执行一次shell
- Crontab定时任务之执行PHP脚本
- linux使用crontab实现PHP执行计划定时任务