首页
关于
搜索
1
微信【限制新设备登录功能】解决办法
939 阅读
2
使用Mem Reduct定时清理内存
451 阅读
3
TP6+Workerman实现聊天室功能
375 阅读
4
PlanetScale 线上免费的数据库
232 阅读
5
PHPExcel快速生成字母表
197 阅读
默认分类
搜索
标签搜索
PHP
Windows 软件
GO
TrafficMonitor
网速悬浮窗
Mem Reduct
内存
PHPExcel
PlanetScale
ZipArchive
One Note插件
Redis
FRP
内网穿透
Philip
累计撰写
20
篇文章
累计收到
1
条评论
首页
栏目
默认分类
页面
关于
搜索到
20
篇与
的结果
2022-12-09
一个Linux命令查询网站
很方便,收藏备用 https://man.niaoge.com/
2022年12月09日
110 阅读
0 评论
0 点赞
2022-10-23
php下载文件到指定目录,并打包
前几天有这么个需求,以后可能也用的上,先保存下来。下载文件到指定目录/** * 下载文件到指定目录 * @param $file_url 请求下载的链接 * @param $path 保存位置 * @param string $save_name 文件名,留空使用下载来的文件名 * @return string 返回下载的文件路径 */ public function downloadFile($file_url, $path, $save_name = ''){ $basePath = DIR_ROOT."upfile/"; if($path){ $basePath .= $path."/"; } $dir_path = $basePath; if (!is_dir($dir_path)) { mkdir($dir_path, 0777, true); } $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $file_url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30); $file = curl_exec($ch); curl_close($ch); //传入保存文件的名称 $filename = $save_name ?: pathinfo($file_url, PATHINFO_BASENAME); $resource = fopen($dir_path. '/'. $filename, 'a'); fwrite($resource, $file); fclose($resource); return $basePath . '/' . $filename; }打包文件/** * 打包文件 * @param $path 需要打包的路径 * @param $zip ZipArchive对象 * @param string $child_path 递归子文件夹用的 */ public function addFileToZip($path, &$zip, $child_path = ''){ $handler = opendir($path); //打开当前文件夹由$path指定。 while(($filename=readdir($handler)) !== false){ if($filename != "." && $filename != ".."){ //文件夹文件名字为'.'和‘..',不要对他们进行操作 if(is_dir($path."/".$filename)){ // 如果读取的某个对象是文件夹,则递归 $zip->addEmptyDir($filename); // 这里注意:php只需传递一个文件夹名称路径即可 $this->addFileToZip($path . "/" . $filename, $zip, $filename); }else{ //将文件加入zip对象 if (!empty($child_path)){ $zip->addFile($path."/".$filename, $child_path."/".$filename); } else{ $zip->addFile($path."/".$filename, $filename); } } } } @closedir($path); }{alert type="warning"}注意调用上面的打包方法时,需要先实例化ZipArchive对象,上示例:{/alert}// 下载到服务器后将文件夹打包为zip $outName = $this->datasheetBase->FormatJobCode($job_code_id).'.zip'; // 压缩包名称 $zipPath = DIR_ROOT."upfile/output/$outName"; // 导出的路径 if (file_exists($zipPath)) @unlink($zipPath); // 清理旧文件 $zip = new ZipArchive(); $data_file = DIR_ROOT."upfile/zip/".$this->customer->getID(); // 需要打包的路径 if ($zip->open($zipPath, ZipArchive::CREATE) === TRUE){ if (!is_dir($data_file)) mkdir($data_file); $this->datasheetBase->addFileToZip($data_file, $zip); } $zip->close();打包完成后,清理缓存文件。因为rmdir方法不能删除有文件的文件夹,所以需要先删除改文件夹的文件,再清理文件夹。上代码:/** * 清理文件 * @param $path */ public function clearFile($path){ $handler = opendir($path); while (($filename=readdir($handler)) !== false){ if($filename != "." && $filename != ".."){ //文件夹文件名字为'.'和‘..',不要对他们进行操作 if(is_dir($path."/".$filename)){ // 删除文件夹底下的文件 $this->clearFile($path . "/" . $filename); }else{ @unlink("$path/$filename"); } } } @closedir($path); $this->removeDIR($path); } /** * 将缓存文件夹删除 * @param $path */ private function removeDIR($path){ $handler = opendir($path); while (($filename=readdir($handler)) !== false){ if($filename != "." && $filename != ".."){ //文件夹文件名字为'.'和‘..',不要对他们进行操作 if(is_dir($path."/".$filename)){ @rmdir($path . "/" . $filename); // 删除文件夹 } } } @closedir($path); }最后重定向到打包好的文件就行header("Cache-Control: public"); header("Content-Description: File Transfer"); header('Content-disposition: attachment; filename='.$outName); // 文件名 header("Content-Type: application/zip"); header("Content-Transfer-Encoding: binary"); header('Content-Length: '. filesize($zipPath)); // 文件大小 header("Location:".HTTPS_SERVER."upfile/output/$outName");
2022年10月23日
84 阅读
0 评论
0 点赞
2022-08-06
PlanetScale 线上免费的数据库
https://planetscale.com可使用Github账号进行登录,创建云数据库可以选择服务器地址PlanetScale有类似GitHub的版本控制功能,可以查看到用户对数据库的更改记录,可以更方便的更新、维护、回滚。可以对上线的分支设置为保护,保护状态的数据库任何人都不能修改表结构用户每个月有一亿行的读取、一千万行的写入和5gb的存储空间有监控功能,可以看到24小时内的每一条查询记录可以设置定期备份总之就是非常nb。22/09/11更新才发现中国ip不给用了,还是得老老实实租服务器或者RDS啊,哈哈
2022年08月06日
232 阅读
0 评论
0 点赞
2022-07-17
Golang: 访问控制、if else、方法变量
Go不像其他语言一样拥有 访问控制修饰符,如 private、 protected、 public等Go 通过字母大小写、 下划线开头控制可见性大写字母开头 能被其他包访问或调用,相当于公开(public)的变量小写字母开头 只能在包内使用,相当于私有(private)变量if else跟其他语言没什么区别,但是不需要圆括号在条件语句之前可以有一个声明语句;在这里声明的变量可以在这个语句所有的条件分支中使用。示例if num := 9; num < 0 {}方法变量 示例printType := func(i interface{}) { switch t := i.(type) { case bool: fmt.Println("is bool") case string: fmt.Println("is string") case int: fmt.Println("is int") case float32: fmt.Println("is float32") default: fmt.Printf("unknown type %T", t) } } printType(1) printType(false) printType(float32(1145141919.81)) printType("this is a string") printType(float64(114514))
2022年07月17日
130 阅读
0 评论
0 点赞
2022-07-17
golang多文件开发
业务代码被拆分为多个文件时,编译或运行就要带上那个文件(同包的情况);如果需要调用其他包里的方法,需要先import进来代码示例:main.go文件package main import ( "fmt" "os" "strconv" "time" ) func main() { num,_ := strconv.ParseInt(os.Args[1], 10, 16) // 将命令行参数的第一个参数转为int类型 if IsOdd(int(num)) { fmt.Println("是奇数") } else{ fmt.Println("是偶数") } // 死循环, 类似while(1) count := 1 // 计数 for{ fmt.Printf("循环了 %d 次, 值到达20次停止.\n", count) count++ time.Sleep(time.Second) // 每秒循环一次, 如果想2秒或更久, 可以n * time.Second if count == 20{ break } } }unit.go文件package main // IsOdd 判断奇偶数 func IsOdd(num int) bool { return num%2!=0 }运行 go run main.go unit.go 【int参数】 编译 go build main.go unit.go运行编译后的文件 main.exe 【int参数】
2022年07月17日
84 阅读
0 评论
0 点赞
1
2
3
4