php OSS 文件读取和写入文件,workerman 生成临时文件并输出浏览器下载

本文涉及的产品
对象存储 OSS,20GB 3个月
对象存储 OSS,恶意文件检测 1000次 1年
对象存储 OSS,内容安全 1000次 1年
简介: php OSS 文件读取和写入文件,workerman 生成临时文件并输出浏览器下载

背景

本文介绍php OSS文件读取和写入文件, workerman 生成临时文件并输出浏览器下载

php文件操作介绍

  • fstat函数:显示文件的所有信息
  • 文件读取: fread(fp,filesize(fp,filesize(fp,filesize(file_path));
  • 写入文件:file_put_contents(filepath,file_path,filepath,con,FILE_APPEND);
  • 文件操作的应用:可以操作ini文件。将服务器的配置写在ini文件中,再对其进行操作。
  • 拷贝文件:copy("e:\2.txt","d:\1.txt")
  • 创建文件夹:mkdir($path,0777,true)

workerman介绍

Workerman是一款纯PHP开发的开源高性能的PHP 应用容器。

Workerman不是重复造轮子,它不是一个MVC框架,而是一个更底层更通用的服务框架,你可以用它开发tcp代理、做游戏服务器、邮件服务器、ftp服务器、甚至开发一个php版本的redis、php版本的数据库、php版本的nginx、php版本的php-fpm等等。Workerman可以说是PHP领域的一次创新,让开发者彻底摆脱了PHP只能做WEB的束缚。

实际上Workerman类似一个PHP版本的nginx,核心也是多进程+Epoll+非阻塞IO。Workerman每个进程能维持上万并发连接。由于本身常驻内存,不依赖Apache、nginx、php-fpm这些容器,拥有超高的性能。同时支持TCP、UDP、UNIXSOCKET,支持长连接,支持Websocket、HTTP、WSS、HTTPS等通讯协议以及各种自定义协议。拥有定时器、异步socket客户端、异步Redis、异步Http、异步消息队列等众多高性能组件。

读取文件

//读取文件
        header("Content-Type: text/html;charset=utf-8");    //设置字符编码
        $file        = base_path() . "/public/index.m3u8";
        $read        = fopen($file, 'r');
        $contents    = fread($read, filesize($file));
        $string1     = getBeforeString($contents, 'enc.key');
        $string2     = getLaterString($contents, 'enc.key');
        $newContents = $string1 . 'enc.key?token=123' . $string2;
        fclose($read);

写入文件

//写入文件、
        $file   = base_path() . "/public/test22.m3u8";
        $handle = fopen($file, 'w');              //打开文件
        fwrite($handle, $newContents);             //写入内容
        fclose($handle);                           //关闭文件
        readfile($file);                           //读取并输出文件全部内容
        return redirect(WEB_URL . '/test22.m3u8');//调转页面

读取oss文件,读取文件每行内容

//读取OSS文件
        $file = OSS_URL . $url1;
        //文件内容加入数组
        $fileContent = @file($file);
        $newContent  = '';
        //遍历文件的每一行
        foreach ($fileContent as $value) {
            //文件该行是否存在这个字符,有这替换内容
            if (strpos($value, 'api.qingsong.chaotuapp.com/') !== false) {
                $value = str_replace('app.com/', "q.com/ckey", $value);
            }
            //文件该行是否存在这个字符,有这拼接内容
            if (strpos($value, '.ts') !== false) {
                $value = $ossUrl . $value;
            }
            $newContent .= $value;
        }

临时文件写入,生成临时文件并浏览器下载

wokerman框架

//写入文件
        $fileName = "$token.m3u8";
        // ./59ee8147cf3f42575bc91ff586d54837.m3u8
        $file = "./$fileName";
        //打开文件
        $handle = fopen($file, 'w');
        //写入内容
        fwrite($handle, $newContent);
        //将文件转字符串
        $content = file_get_contents($file);
        //删除临时文件
        unlink($file);
        //输出浏览器
        $response = new Response();
        return $response->withHeader('content-description', 'File Transfer')
            ->withHeader('content-type', 'application/force-download')
            ->withHeader('content-disposition', "attachment; filename={$fileName}")
            ->withHeader('content-transfer-encoding', 'binary')
            ->withHeader('pragma', 'public')
            ->withBody($content);



相关实践学习
借助OSS搭建在线教育视频课程分享网站
本教程介绍如何基于云服务器ECS和对象存储OSS,搭建一个在线教育视频课程分享网站。
目录
相关文章
|
2月前
|
PHP
php常见问题,php.ini文件不存在或者找不到,mb_strlen()函数未定义系列问题,dll模块找不到的解决
本文介绍了解决PHP常见问题的步骤,包括定位和创建`php.ini`文件,以及解决`mb_strlen()`函数未定义和DLL模块加载错误的具体方法。
php常见问题,php.ini文件不存在或者找不到,mb_strlen()函数未定义系列问题,dll模块找不到的解决
|
3月前
|
XML 缓存 JSON
为什么浏览器中有些图片、PDF等文件点击后有些是预览,有些是下载
为什么浏览器中有些图片、PDF等文件点击后有些是预览,有些是下载
251 0
|
8天前
|
Web App开发 缓存 安全
WIN11 Chrome 双击打不开闪退及Chrome浏览器不能拖拽文件crx
【11月更文挑战第6天】本文介绍了 WIN11 系统中 Chrome 浏览器双击打不开闪退及不能拖拽文件 crx 的原因和解决方法。包括浏览器版本过旧、扩展程序冲突、硬件加速问题、缓存过多、安全软件冲突、系统文件损坏、用户配置文件损坏等问题的解决方案,以及 crx 文件的屏蔽、权限问题和文件格式问题的处理方法。
|
2月前
|
前端开发 PHP
php学习笔记-php文件表单上传-day06
本文介绍了PHP文件上传处理流程、预定义变量`$_FILES`的使用、文件上传状态代码以及文件上传实现函数。同时,通过一个文件上传的小例子,演示了文件上传表单的创建、文件上传表单处理的PHP页面编写以及运行测试输出。
php学习笔记-php文件表单上传-day06
|
2月前
|
JSON 前端开发 JavaScript
java中post请求调用下载文件接口浏览器未弹窗而是返回一堆json,为啥
客户端调接口需要返回另存为弹窗,下载文件,但是遇到的问题是接口调用成功且不报错,浏览器F12查看居然返回一堆json,而没有另存为弹窗; > 正确的效果应该是:接口调用成功且浏览器F12不返回任何json,而是弹窗另存为窗口,直接保存文件即可。
141 2
|
2月前
|
缓存 监控 算法
分析慢日志文件来优化 PHP 脚本的性能
分析慢日志文件来优化 PHP 脚本的性能
|
2月前
进入靶场,出现一张照片,右击查看源代码,发现有一个注释的source.php文件
这段代码实现了一个网站上弹出的促销海报动画效果,包含一个关闭按钮。当促销海报弹出时,会在三秒后开始抖动一两下。海报使用固定定位居中显示,带有阴影和圆角,关闭按钮位于右上角。可以通过修改时间参数调整弹出时间。
19 0
|
3月前
|
存储 安全 数据库连接
php.ini 文件的用途是什么?
【8月更文挑战第29天】
70 1
|
3月前
|
Web App开发 JSON 数据格式
【Azure Developer】浏览器查看本地数据文件时遇见跨域问题(CORS)
【Azure Developer】浏览器查看本地数据文件时遇见跨域问题(CORS)
【Azure Developer】浏览器查看本地数据文件时遇见跨域问题(CORS)
|
3月前
|
PHP
PHP遍历文件并同步上传到服务器
在进行网站迁移时,由于原网站的图片文件过多,采用打包下载再上传的方式耗时过长,且尝试使用FTP工具从旧服务器传输至新服务器时失败。为解决此问题,特使用PHP编写了一款工具,该工具能扫描指定目录下的所有`.webp`图像文件,并将其上传至新的服务器,极大地提高了迁移效率。
103 16