common.php
3.7 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
<?php
// +----------------------------------------------------------------------
// | 狂团[kt8.cn]旗下KtAdmin是为独立版SAAS系统而生的快速开发框架.
// +----------------------------------------------------------------------
// | [KtAdmin] Copyright (c) 2022 http://ktadmin.cn All rights reserved.
// +----------------------------------------------------------------------
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
// +----------------------------------------------------------------------
// 这是系统自动生成的公共文件
/**
* 执行sql 保证sql执行完
* @param $content
* @return array
* @throws \Exception
*/
function updateRunSql($content){
// error_reporting(0);
//遍历执行sql语句
//去除空行和注释
$content=removeBom($content);//自动去除bom头
// $content = preg_replace("/[\/\*][\s\S\r\n]*[\*\/]/", '', $content);
// $content = preg_replace("/[--]+(.+)(\r\n)+/", '', $content);
$content = preg_replace("/\/\*[\s\S\r\n]*\*\//", '', $content);
$content = preg_replace("/--+(.+)(\r\n)+/", '', $content);
$sqlArr = preg_split("/;[\r\n]*/", $content);
$error_message = '';
foreach ($sqlArr as $v) {
$v = str_replace( "\r\n",' ',$v);
if (empty($v)) continue;
try {
think\facade\Db::execute($v);
} catch (\Exception $e) {
// $error_message .= $e->getMessage() . ' ';
// \Log::error('sql执行错误:' . $e->getMessage());
$error_message = $v;
}
}
if ($error_message) {
return ['status'=>'error','msg'=> $error_message];
} else {
return ['status'=>'success','msg'=>'执行成功'];
}
}
/**
* 自动找到内容bom头并去除
* @param $content
* @return bool|string
*/
function removeBom($content){
$contents=$content;
$charset[1]=substr($contents,0,1);
$charset[2]=substr($contents,1,1);
$charset[3]=substr($contents,2,1);
if(ord($charset[1])==239 && ord($charset[2])==187 && ord($charset[3])==191){
$content=substr($content,3);
}
return $content;
}
/**
*
* 清空文件夹
* @param $dirName
* @param $oldtime 小于的时间
* @param $newtime 大于的时间
*/
function clear_dir($dirName){
if(is_dir($dirName)){//如果传入的参数不是目录,则为文件,应将其删除
//如果传入的参数是目录
$handle = @opendir($dirName);
while(($file = @readdir($handle)) !== false){
if($file!='.'&&$file!='..'){
$dir = $dirName . '/' . $file; //当前文件$dir为文件目录+文件
remove_dir($dir);
}
}
remove_dir($dirName);
}
}
/**
*
* 清空并删除文件夹
* @param $dirName
* @param $oldtime 小于的时间
* @param $newtime 大于的时间
*/
function remove_dir($dirName,$oldtime=null,$newtime=null){
if(!is_dir($dirName)){//如果传入的参数不是目录,则为文件,应将其删除
$mtime = filectime($dirName);
if($oldtime===null&&$newtime===null){
@unlink($dirName);
}else{
if(isset($oldtime)){
if($mtime<$oldtime){
@unlink($dirName);
}
}
if(isset($newtime)){
if($mtime>$newtime){
@unlink($dirName);
}
}
}
return false;
}
//如果传入的参数是目录
$handle = @opendir($dirName);
while(($file = @readdir($handle)) !== false){
if($file!='.'&&$file!='..'){
$dir = $dirName . '/' . $file; //当前文件$dir为文件目录+文件
remove_dir($dir,$oldtime,$newtime);
}
}
closedir($handle);
return @rmdir($dirName) ;
}