PHP脚本:
<?php
//设置不超时
ini_set('max_execution_time', '0');
//连接数据库
$con = new mysqli("127.0.0.1","用户名","密码");
if ($con->connect_error){
die("连接数据库失败".$con->connect_error);
}
$date = date('Ymd');
$begin_time = date('Y-m-d H:i:s');
$success_sum = 0;
$fail_sum = 0;
mysqli_query($con,"set names 'utf8'");
mysqli_select_db($con, "dv");
//查表获取信息
$sql = "select * from dv_cases_zip where status=0";
$res = mysqli_query($con, $sql);
$row = '';
while ($row = mysqli_fetch_array($res)){
$order_no = $row['order_no'];
$zip_id = $row['zip_id'];
if($order_no){
$filename = "/raid5/data/eduzip/$date/";
if (!file_exists($filename)){
mkdir($filename);
}
$filename = "/raid5/data/eduzip/$date/{$order_no}.zip";
if (file_exists($filename)){
updateCasesZip($zip_id);
continue;
}
//切换路径到要压缩打包目录,避免解压后出现多层目录
chdir("/raid5/data/eduData/2022/");
$dir_path = "./{$order_no}";
if(!is_dir($dir_path)){
continue;
}
echo $order_no."--开始时间:".date('Y-m-d H:i:s');
//注意:shell_exec()默认是禁用的,在PHP的配置文件php.ini中disable_functions位置从禁用里面去掉即可
shell_exec("zip -r $filename {$order_no}/*");
if (file_exists($filename)){
updateCasesZip($zip_id);
$success_sum++;
echo "压缩完成第".$success_sum."个数据\n";
}
}
}
mysqli_close($con);
/**数据更新 */
function updateCasesZip($zip_id){
$con2 = new mysqli("127.0.0.1","用户名","密码");
if ($con2->connect_error){
die("连接数据库失败".$con2->connect_error);
}
mysqli_query($con2,"set names 'utf8'");
mysqli_select_db($con2, "dv");
$time = date('Y-m-d H:i:s');
$sql3 = "update dv_cases_zip set status=1,zip_time='{$time}' where zip_id='{$zip_id}'";
mysqli_query($con2, $sql3);
mysqli_close($con2);
return true;
}
计划任务:
#打开计划任务
crontab -e
#请根据实际路径进行配置
#时间格式:分、时、日、月、星期
*/3 * * * * /usr/local/php/bin/php /php_shell/casesZipProcess.php
#如果第一次使用计划任务要打开服务
/etc/init.d/cron start