linux生产环境连库查询压缩文件夹为zip包PHP脚本

该PHP脚本用于设置无超时执行,连接MySQL数据库,查询未处理状态的案件,对指定目录下的文件进行zip压缩,成功后更新数据库状态。脚本还包含了使用crontab设置定时任务的示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值