当前位置: 首页 > news >正文

laravel 凌晨0点 导出数据库

一、创建导出模型

<?php
namespace  App\Models;use Illuminate\Support\Facades\DB;class  DbBackup
{private $table;public function __construct(){$this->table = env('DB_DATABASE');}public function run($file = ''){$file       = !$file ? public_path($this->table.'.mysql') : $file;$tables     = DB::select('SHOW TABLES FROM '.$this->table);$tableName  = 'Tables_in_'.$this->table;$info  = "-- ----------------------------\r\n";$info .= "-- 日期:".date("Y-m-d H:i:s",time())."\r\n";$info .= "-- 本程序不适合处理超大量数据\r\n";$info .= "-- ----------------------------\r\n\r\n";file_put_contents($file,$info,FILE_APPEND);//将每个表的表结构导出到文件foreach($tables as $val){$sql    = "show create table ".$val->$tableName;$row    = DB::select($sql);$info   = "-- ----------------------------\r\n";$info   .= "-- Table structure for `".$val->$tableName."`\r\n";$info   .= "-- ----------------------------\r\n";$info   .= "DROP TABLE IF EXISTS `".$val->$tableName."`;\r\n";$temp   = 'Create Table';$sqlStr = $info.$row[0]->$temp.";\r\n\r\n";//追加到文件file_put_contents($file,$sqlStr,FILE_APPEND);}//将每个表的数据导出到文件foreach($tables as $val){$sql = "select * from ".$val->$tableName;$res = \DB::select($sql);//如果表中没有数据,则继续下一张表if(count($res)<1) continue;//$info = "-- ----------------------------\r\n";$info .= "-- Records for `".$val->$tableName."`\r\n";$info .= "-- ----------------------------\r\n";file_put_contents($file,$info,FILE_APPEND);//读取数据foreach ($res as $key => $value){$sqlStr     = "INSERT INTO `".$val->$tableName."` VALUES (";$sqlTemp    = '';foreach(get_object_vars($value) as $v){$sqlTemp = !$sqlTemp ? "'".$v ."'" : $sqlTemp . ',\''.$v."'";}$sqlStr =  $sqlStr . $sqlTemp .");\r\n";file_put_contents($file,$sqlStr,FILE_APPEND);}file_put_contents($file,"\r\n",FILE_APPEND);}return $file;}
}

二、创建任务文件

php artisan make:command Dbsql

三、任务业务逻辑

<?phpnamespace App\Console\Commands;use App\Models\DbBackup;
use Illuminate\Console\Command;
use Illuminate\Support\Facades\File;class DbSql extends Command
{/*** The name and signature of the console command.** @var string*/protected $signature = 'command:dbsql';/*** The console command description.** @var string*/protected $description = 'Command description';/*** Create a new command instance.** @return void*/public function __construct(){parent::__construct();}/*** Execute the console command.** @return mixed*/public function handle(){$dir = public_path('upload/backup/');if(!is_dir($dir)) mkdir($dir);//因为要每天备份数据库,所以生成前清楚文件夹下的前一天sqlFile::cleanDirectory(public_path('upload/backup'));$file_name = date('Y-m-d').'.sql';$file_path = $dir.$file_name;$backup = new DbBackup();$backup->run($file_path);//下面为下载sql文件header('Content-type: application/sql');header("Content-Disposition: attachment; filename=\"{$file_name}\"");readfile($file_path);return "数据库导出完成";}
}

此时就可以对任务进行测试php artisan command:dbsql

四、高级配置任务的调度(可以对多个任务进行封装执行一次命令)

<?phpnamespace App\Console;use Illuminate\Console\Scheduling\Schedule;
use Illuminate\Foundation\Console\Kernel as ConsoleKernel;class Kernel extends ConsoleKernel
{/*** The Artisan commands provided by your application.** @var array* @info 配置command调度类*/protected $commands = [\App\Console\Commands\DbSql::class,\App\Console\Commands\gradeData::class,\App\Console\Commands\schoolCountData::class,//];/*** Define the application's command schedule.** @param  \Illuminate\Console\Scheduling\Schedule  $schedule* @return void* @info 执行任务调度*/protected function schedule(Schedule $schedule){$schedule->command('command:dbsql')//每五分钟
//                    ->everyFiveMinutes();//每天凌晨0点->daily();$schedule->command('command:gradeData')
//                    ->everyFiveMinutes();->daily();$schedule->command('command:schoolData')
//             ->everyFiveMinutes();->daily();//          ->hourly();}/*** Register the commands for the application.** @return void*/protected function commands(){$this->load(__DIR__.'/Commands');require base_path('routes/console.php');}
}

五、配置cron

执行crontab -e

1 * * * * php /var/www/sc/artisan DelRecycleAsset >> /dev/null 2>&1
0 0 * * * php /var/www/ty/artisan schedule:run >> /dev/null 2>&1```

相关文章:

laravel 凌晨0点 导出数据库

一、创建导出模型 <?php namespace App\Models;use Illuminate\Support\Facades\DB;class DbBackup {private $table;public function __construct(){$this->table env(DB_DATABASE);}public function run($file ){$file !$file ? public_path($this->t…...

mysql MVCC多版本并发控制

mvcc的概念 mvcc 的实现依赖于&#xff1a; 隐藏字段 行格式&#xff08;row_id,trx_id,roll_ponter&#xff09;UndologRead view innodb 存储引擎的表来说&#xff0c;聚集索引记录中都包含两个必要的隐藏字段&#xff0c;row_id(如果没有聚集索引&#xff0c;才会创建的) …...

new/delete, malloc/free 内存泄漏如何检测

区别&#xff1a; 首先new/delete是运算符&#xff0c;malloc/free是库函数。malloc/free只开辟内存不初始化&#xff1b;new/delete及开辟内存也初始化。抛出异常的方式&#xff1a;new/delete开辟失败使用抛出bad_alloc&#xff1b;malloc/free通过返回值判断。malloc和new区…...

Java开发推荐关注的网站

一、开发者社区 阿里云开发者社区&#xff1a;https://developer.aliyun.com/腾讯云开发者社区&#xff1a;https://cloud.tencent.com/developer 二、开发规范 阿里巴巴Java开发规范 github地址&#xff1a;https://github.com/alibaba/p3c gitcode地址&#xff1a;https:/…...

OpenHarmony社区运营报告(2023年8月)

本月快讯 2023年8月3日&#xff0c;OpenAtom OpenHarmony&#xff08;以下简称“OpenHarmony”&#xff09;发布了Beta2版本。OpenHarmony 4.0 Beta2在系统能力、应用框架、分布式通信、媒体功能、安全性等方面进行了全面升级。其中&#xff0c;ArkUI增强了界面组件能力&#x…...

Web学习笔记-React(路由)

笔记内容转载自 AcWing 的 Web 应用课讲义&#xff0c;课程链接&#xff1a;AcWing Web 应用课。 CONTENTS 1. Web分类2. Route组件3. URL中传递参数4. Search Params传递参数5. 重定向6. 嵌套路由 本节内容是如何将页面和 URL 一一对应起来。 1. Web分类 Web 页面可以分为两…...

MySQL无法查看系统默认字符集以及校验规则

show variables like character_set_database; show variables like collation_database;这个错误信息表示MySQL在尝试访问performance_schema.session_variables表时&#xff0c;发现该表不存在。这个问题可能是由于MySQL的版本升级导致的。解决这个问题的一种方法是运行mysql…...

不负昭华,前程似锦,新一批研发效能认证证书颁发丨IDCF

亲爱的认证学员&#xff0c; 恭喜你成功获得由国家工业和信息化部教育与考试中心颁发的职业技术证书——《研发效能(DevOps)工程师国家职业技术认证》。你的努力和才华得到了官方的认可&#xff0c;这是你职业生涯中的一个重要的里程碑。 这个证书不仅代表着你的专业知识和技…...

深入理解ES6模块化:语法、特性与最佳实践

目录 一、前言 二、ES6模块化基础 1. 模块的定义与导出 2. 模块的导入与使用 3. 模块默认导出与命名导出 4. 模块的循环引用与解决方案 三、模块化语法进阶 1. 模块的命名导出与默认导出的混合使用 2. 模块的别名导出与导入 3. 命名空间的使用与作用 4. 动态导入模块…...

Matlab图像处理-HSI模型

HSI模型 HSI模型是从人的视觉系统出发&#xff0c;直接使用颜色三要素色调(Hue)、饱和度(Saturation)和亮度&#xff08;Intensity&#xff09;来描述颜色。 亮度是指人眼感知光线的明暗程度。光的能量越大&#xff0c;亮度就越大。 色调是颜色最重要的属性。 它决定了颜色的…...

【Springboot】Springboot如何优雅停机?K8S中Pod如何优雅停机?

什么是优雅停机&#xff1a; 就是对应用进程发送停止指令之后&#xff0c;执行的一系列保证应用正常关闭的操作。这些操作往往包括等待已有请求执行完成、关闭线程、关闭连接和释放资源等 就是对应用进程发送停止指令之后&#xff0c;能保证正在执行的业务操作不受影响&#x…...

伦敦银一手是多少?

伦敦银是以国际现货白银价格为跟踪对象的电子合约交易&#xff0c;无论投资者通过什么地方的平台进入市场&#xff0c;执行的都是统一国际的标准&#xff0c;一手标准的合约所代表的就是5000盎司的白银&#xff0c;如果以国内投资者比较熟悉的单位计算&#xff0c;那约相当于15…...

Language Adaptive Weight Generation for Multi-task Visual Grounding 论文阅读笔记

Language Adaptive Weight Generation for Multi-task Visual Grounding 论文阅读笔记 一、Abstract二、引言三、相关工作3.1 指代表达式理解3.2 指代表达式分割3.3 动态权重网络 四、方法4.1 总览4.2 语言自适应权重生成语言特征聚合权重生成 4.3 多任务头4.4 训练目标 五、实…...

面试算法4:只出现一次的数字

题目 输入一个整数数组&#xff0c;数组中只有一个数字出现了一次&#xff0c;而其他数字都出现了3次。请找出那个只出现一次的数字。例如&#xff0c;如果输入的数组为[0&#xff0c;1&#xff0c;0&#xff0c;1&#xff0c;0&#xff0c;1&#xff0c;100]&#xff0c;则只…...

#与##的用法

# 作用&#xff1a; 左右加双引号&#xff0c;使其变成字符串 #的作用&#xff1a;是在形参左右各加双引号&#xff0c;使它变成字符串。#define STR(param) #paramchar *pStr STR(hello); // 展开后 char *pStr “hello”; ## 作用&#xff1a;胶水&#xff0c;使…...

Flutter的路由router-页面跳转

文章目录 概念介绍基本路由&#xff08;Basic Routing&#xff09;跳转到某个页面弹出页面 命名路由&#xff08;Named Routing&#xff09;第三方路由管理库&#xff08;Third-Party Routing Libraries&#xff09; Android原生的路由Intent-based Routing&#xff08;基于Int…...

24v转5v稳压芯片-5A大电流输出ic

这款24V转5V5A汽车充电芯片具有以下特性和参数&#xff1a; - 宽输入电压范围&#xff1a;4.5V至36V - 最大输出电流&#xff1a;5.0A - 高达92%的转换效率 - 恒流/恒压模式控制 - 最大占空比100% - 可调输出电压 - 2%的输出电压精度 - 集成40mΩ高侧开关 - 集成18mΩ低侧开关 …...

Layui + Flask | 表单元素(组件篇)(06)

表单元素是输入框、选择框、复选框、开关、单选框等表单项组件,用于对表单域进行输入。layui 的表单元素对原生的表单元素进行了大幅的用着,有好看的 UI 同时又有非常方便操作的 API。 输入框 https://layui.dev/docs/2.8/form/input.html 输入框组件是对文本框 <input ty…...

Kakfa - Producer机制原理与调优

Producer是Kakfa模型中生产者组件&#xff0c;也就是Kafka架构中数据的生产来源&#xff0c;虽然其整体是比较简单的组件&#xff0c;但依然有很多细节需要细品一番。比如Kafka的Producer实现原理是什么&#xff0c;怎么发送的消息&#xff1f;IO通讯模型是什么&#xff1f;在实…...

基于图像形态学处理和边缘提取算法的路面裂痕检测matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 matlab2022a 3.部分核心程序 [Rr,Cc] size(Image1);% 获取 Image1 矩阵的大小&#xff08;行数和列数&#xff09; % 创…...

收藏!小白程序员必备:2026年AI大模型就业新机遇与学习路线指南

根据世界经济论坛报告&#xff0c;到2030年科技、数据、AI等领域将创造1.7亿工作机会&#xff0c;同时淘汰9200万个岗位。AI市场规模预计到2034年达36804.7亿美元&#xff0c;年复合增长率19.20%。中国AI人才需求将远超供应。文章介绍了AI运营/AIGC内容创作者、算法工程师、大模…...

别再只会addItem了!QT QComboBox的5个高级用法与实战场景(含完整代码)

别再只会addItem了&#xff01;QT QComboBox的5个高级用法与实战场景&#xff08;含完整代码&#xff09; 在QT开发中&#xff0c;QComboBox可能是最容易被低估的控件之一。很多开发者仅仅把它当作一个简单的下拉选择框&#xff0c;用addItem()填充几个静态选项就草草了事。但实…...

AI智能体审批系统设计:从规则到价值网络的动态决策引擎

1. 项目概述&#xff1a;为什么AI需要“举手提问”&#xff1f;在AI智能体&#xff08;Agent&#xff09;日益深入业务流程自动化的今天&#xff0c;一个核心的、却常被忽视的问题浮出水面&#xff1a;这个拥有一定自主决策能力的“数字员工”&#xff0c;在什么情况下应该停下…...

正点原子 STM32MP257 同构多核架构下的 ADC 电压采集与处理应用开发实战

在嵌入式系统中&#xff0c;ADC模拟电压的读取是常见的需求。如何高效、并发、且可控地完成数据采集与处理&#xff1f;本篇文章通过双线程分别绑定在 Linux 系统的不同 CPU 核心上&#xff0c;采集 /sys/bus/iio 接口的 ADC 原始值与缩放系数 scale&#xff0c;并在另一个核上…...

UniversalUnityDemosaics:Unity游戏马赛克去除全攻略

UniversalUnityDemosaics&#xff1a;Unity游戏马赛克去除全攻略 【免费下载链接】UniversalUnityDemosaics A collection of universal demosaic BepInEx plugins for games made in Unity3D engine 项目地址: https://gitcode.com/gh_mirrors/un/UniversalUnityDemosaics …...

别再用眼睛猜阈值了!Halcon threshold函数实战:5分钟搞定车牌字符分割

工业视觉实战&#xff1a;Halcon阈值分割在车牌识别中的精准应用 在机器视觉领域&#xff0c;车牌识别系统是典型的工业应用场景之一。而字符分割作为识别流程中的关键环节&#xff0c;直接影响最终识别准确率。许多初学者往往陷入一个误区——仅凭肉眼观察随意设置阈值参数&am…...

国标通气帽、DN200通气帽与市政管道通气帽怎么选?

我第一次接触通气帽这玩意儿&#xff0c;是在一个闷热的下午。工地上尘土飞扬&#xff0c;师傅递给我一个金属罩子&#xff0c;说&#xff1a;“这是通气用的&#xff0c;别小看它。”我当时还纳闷&#xff1a;不就是个帽子嘛&#xff0c;能有多大讲究&#xff1f;后来才明白&a…...

chatgpt.js:纯客户端集成ChatGPT,构建浏览器AI应用实战

1. 项目概述&#xff1a;一个专为浏览器环境打造的ChatGPT交互库如果你是一名前端开发者&#xff0c;或者经常需要在自己的网页项目中集成智能对话功能&#xff0c;那么你一定对调用大型语言模型的API不陌生。传统的做法是&#xff0c;在自己的后端服务器上封装一个接口&#x…...

STM32CubeMX实战:用高级定时器TIM1实现带刹车功能的互补PWM输出(F4系列)

STM32CubeMX实战&#xff1a;用高级定时器TIM1实现带刹车功能的互补PWM输出&#xff08;F4系列&#xff09; 在电机控制、电源管理等工业应用中&#xff0c;硬件级的保护机制往往比软件响应更加可靠。STM32F4系列的高级定时器TIM1提供的互补PWM输出与刹车功能&#xff0c;正是为…...

3分钟掌握微信聊天记录永久保存:从数据备份到智能分析完全攻略

3分钟掌握微信聊天记录永久保存&#xff1a;从数据备份到智能分析完全攻略 【免费下载链接】WeChatMsg 提取微信聊天记录&#xff0c;将其导出成HTML、Word、CSV文档永久保存&#xff0c;对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Trending/…...