400-680-8581
欢迎访问:小牛IT网
中国IT知识门户
位置:小牛IT网 > 资讯中心 > it杂谈 > 文章详情

php是什么文件

作者:小牛IT网
|
261人看过
发布时间:2025-07-20 15:37:26 | 更新时间:2025-07-20 15:37:26
在Web开发领域,".php是什么文件"是一个基础但至关重要的问题。简单说,PHP文件是一种包含PHP(Hypertext Preprocessor)脚本代码的纯文本文件,以`.php`扩展名标识,由服务器端解释执行,用于生成动态网页内容、处理表单数据、连接数据库等。作为开源、跨平台的后端脚本语言,PHP驱动着全球约77%的网站(W3Techs, 2023),是构建现代Web应用的核心技术之一。理解其本质是开发者入门的基石。
php是什么文件

       1. 文件本质与定位:服务器端脚本的载体

       PHP文件(`.php`)本质是包含PHP代码的纯文本文件,其核心使命在于服务器端执行。它区别于直接在浏览器渲染的HTML文件(`.`)或客户端执行的JavaScript文件(`.js`)。当用户请求一个PHP文件时,Web服务器(如Apache, Nginx)识别`.php`扩展名,调用PHP解释器(如Zend Engine)处理文件中的PHP脚本代码。解释器执行脚本逻辑(如计算、数据库查询),并将最终结果(通常是HTML)发送回浏览器。因此,用户看到的始终是处理后的输出,而非原始PHP代码本身。这确保了业务逻辑的安全性和动态内容生成能力。

       案例1:登录验证页面 (`login.php`)。用户输入用户名密码后提交表单,`login.php`中的代码连接数据库验证凭证,根据结果生成“登录成功”或“密码错误”的HTML页面返回给用户。用户无法看到验证逻辑的PHP代码。

       案例2:电商产品列表页 (`products.php`)。该文件从MySQL数据库检索当前商品信息(价格、库存),结合HTML模板动态生成包含最新数据的商品列表页。库存变化时无需手动修改HTML文件。

       案例3:API接口端点 (`api/get_user.php`)。接收客户端请求(如JSON),查询数据库获取用户数据,将结果格式化为JSON响应。客户端不关心数据如何获取,只处理结果。

       2. 扩展名标识:`.php`的关键作用

       文件扩展名`.php`是服务器识别并处理该文件的关键标识符。它是Web服务器配置(如Apache的`mod_php`或Nginx的`php-fpm`)的触发点。没有此扩展名,服务器会将其视为普通文本或静态文件直接输出源码,导致安全风险与功能失效。开发者必须确保服务器正确配置了PHP处理器对`.php`文件的关联。

       案例1:误命名文件为`index.`。若其中包含PHP代码 ``,服务器会直接输出这段文本到浏览器,而非当前日期。

       案例2:自定义扩展名的特殊配置。大型项目中可能因历史原因使用`.inc`或`.module`包含PHP代码。这需要在服务器配置中显式添加处理规则(如Apache的`AddType`),否则代码会泄露。

       案例3:框架路由伪静态。现代框架(如Laravel)常使用单一入口文件`index.php`,并通过URL重写规则(如`.htaccess`)将所有请求路由给它,隐藏了真实`.php`路径,但核心处理文件仍是PHP。

       3. 内容结构:混合文本与可执行脚本

       PHP文件的内容结构灵活多样。它可以是:纯PHP代码(常见于类定义文件或功能脚本);HTML与PHP混合(最常见于模板);甚至包含CSS、JavaScript。PHP代码必须包裹在界定符中:`` 或短标签 ``(需服务器开启支持)。界定符之外的文本会被直接输出。这种混合模式是其强大模板能力的基础。

       案例1:简单混合模板 (`welcome.php`):

       php

       <>

       

       

Welcome, !

// PHP变量嵌入HTML

        // PHP控制结构控制HTML块

       

Admin Panel

       

       

       

       

       案例2:纯PHP功能文件 (`database_connection.php`):

       php

       

       $host = 'localhost';

       $dbname = 'myapp';

       $user = 'root';

       $pass = '';

       try

        $pdo = new PDO("mysql:host=$host;dbname=$dbname;charset=utf8", $user, $pass);

        $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

        catch (PDOException $e)

        die("Connection failed: " . $e->getMessage());

       

       ?>

       

       案例3:命令行脚本 (`cron_job.php`)。通过`php cron_job.php`直接执行,无需Web服务器。文件内通常只有PHP代码,用于后台任务处理。

       4. 执行机制:服务器端处理的精髓

       PHP文件的核心价值在于其服务器端执行模型:

       1. 请求触发:用户浏览器请求`.php`资源。

       2. 服务器拦截:Web服务器根据扩展名识别,将请求移交PHP处理器。

       3. 解释执行:PHP解释器逐行解析文件:

        遇到纯文本/HTML:直接输出到缓冲区。

        遇到 ``:执行其中的PHP代码(变量计算、数据库操作、函数调用等),执行结果输出到缓冲区。

       4. 输出返回:处理器完成执行,将缓冲区内容(纯HTML/文本/JSON等)发送给Web服务器,服务器再返回给用户浏览器。

       这个过程完全在服务器完成,客户端只接收结果,保证了代码安全性和处理能力。

       案例1:动态时间显示。`time.php` 包含 ``。用户每次刷新,服务器执行`date()`函数获取新时间并返回新HTML。

       案例2:复杂数据库报表 (`report.php`)。脚本执行多条SQL查询,进行数据分析汇总,生成包含图表(如使用GD库)的HTML报告。所有计算在服务器完成,用户仅接收最终报告。

       案例3:文件上传处理 (`upload.php`)。接收用户上传的文件,PHP代码验证类型/大小,移动到安全目录,记录信息到数据库。敏感操作在服务器环境内完成。

       5. 核心语法要素:构建动态逻辑的基础

       PHP文件内的脚本代码利用其语法实现功能:

        变量:`$variable = "value";` 存储数据。

        数据类型:字符串、整数、浮点数、布尔值、数组、对象、NULL。

        运算符:算术、比较、逻辑、赋值等。

        控制结构:`if/else`, `switch`, `for`, `foreach`, `while`, `do-while` 控制流程。

        函数:内置函数(`strlen()`, `array_push()`)和用户自定义函数封装可重用代码。

        类与对象:面向对象编程(OOP)支持封装、继承、多态。

        超全局变量:`$_GET`, `$_POST`, `$_SESSION`, `$_SERVER` 等访问请求数据、会话、服务器信息。

       案例1:表单数据处理。`process_form.php` 使用 `$_POST['email']` 获取表单提交的邮箱,`if (!filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)) ... ` 进行验证。

       案例2:数组遍历生成列表。`
  • - $
  • `

           案例3:使用PDO类数据库操作。`$stmt = $pdo->prepare("SELECT FROM users WHERE id = :id"); $stmt->execute(['id' => $userId]); $user = $stmt->fetch();`

           6. 关键作用:驱动动态Web应用

           PHP文件是实现动态网站和Web应用不可或缺的引擎,主要承担:

            内容动态生成:从数据库、API或其他来源获取数据,实时构建HTML页面(如新闻网站、电商产品页)。

            表单数据处理:接收、验证、清理用户输入(注册、登录、搜索、评论),与数据库交互。

            会话管理:使用`$_SESSION`跟踪用户登录状态、购物车内容等。

            文件操作:上传、下载、读写服务器文件系统。

            API构建:创建RESTful或GraphQL API接口,供前端应用或其他服务调用。

            集成第三方服务:支付网关、邮件发送、社交媒体登录等。

           案例1:用户个人资料页 (`profile.php`)。根据当前登录用户ID(`$_SESSION['user_id']`),从数据库查询用户数据(姓名、头像、简介),动态生成个性化页面。

           案例2:购物车结算 (`checkout.php`)。处理订单数据:验证地址、计算税费和总价(`$total = $subtotal (1 + $taxRate);`)、调用支付网关API(如Stripe SDK)、生成订单记录存入数据库。

           案例3:天气预报小部件 (`weather_widget.php`)。调用第三方天气API(如OpenWeatherMap),解析返回的JSON数据,格式化为HTML片段嵌入到其他页面中。

           7. 开发工具与工作流程

           创建和编辑PHP文件需要合适的工具链:

            代码编辑器/IDE:VS Code (PHP Intelephense插件), PhpStorm, Sublime Text。提供语法高亮、代码补全、调试支持。

            本地开发环境:集成解决方案(XAMPP, MAMP, WampServer)或手动配置(Apache/Nginx + PHP + MySQL/MariaDB)。用于本地编写和测试`.php`文件。

            版本控制:Git(GitHub, GitLab, Bitbucket)管理`.php`文件版本、协作开发。

            调试工具:Xdebug集成断点调试、变量监视、堆栈跟踪。

            包管理:Composer管理项目依赖库(如Laravel框架、Symfony组件、PHPUnit)。

           工作流通常为:本地编码 `.php` 文件 -> 本地环境测试 -> Git提交 -> 部署到生产服务器。

           案例1:使用VS Code编写`index.php`,借助Intelephense获得`$_GET`自动补全和参数提示。

           案例2:在XAMPP环境中,将`project`文件夹放入`htdocs`,通过`http://localhost/project/index.php`访问测试。

           案例3:使用Composer安装依赖 `composer require monolog/monolog`,在`composer.json`中声明,在`.php`文件中通过`require 'vendor/autoload.php';`自动加载Monolog库进行日志记录。

           8. 安全考量:保护PHP文件与应用

           `.php`文件的处理特性带来特定安全风险,需严格防范:

            代码注入 (Code Injection):确保用户输入不被当作代码执行(`eval()`极度危险,避免使用)。

            SQL注入 (SQL Injection):使用预处理语句(PDO或MySQLi)绑定参数,永远不要直接拼接用户输入到SQL查询。

            跨站脚本攻击 (XSS):对输出到HTML的内容进行转义(`specialchars()`)。

            跨站请求伪造 (CSRF):使用CSRF Token保护表单提交和关键操作。

            文件包含漏洞:避免使用用户输入直接控制`include`/`require`路径。使用白名单或严格过滤。

            敏感信息泄露:确保配置文件(含数据库密码)位于Web根目录之外,错误报告设置(`display_errors = Off`)防止生产环境泄露源码路径或SQL错误。

           案例1:防止SQL注入。不安全做法:`$sql = "SELECT FROM users WHERE id = " . $_GET['id'];` 安全做法:`$stmt = $pdo->prepare("SELECT FROM users WHERE id = ?"); $stmt->execute([$_GET['id']]);`

           案例2:防止XSS。输出用户评论时:`echo specialchars($userComment, ENT_QUOTES, 'UTF-8');`

           案例3:安全配置文件存储。将`config.php`放在`/var/www/myapp/private/`(Web根目录`public_`之外),在需要的地方使用`require __DIR__ . '/../private/config.php';`包含。

           9. 性能优化:高效执行之道

           优化`.php`文件的执行效率对用户体验至关重要:

            OPcache:启用并配置Zend OPcache(PHP内置字节码缓存)。避免每次请求都重新解析编译相同脚本。

            代码优化:避免不必要的循环、减少数据库查询次数(使用JOIN或批量查询)、选择合适的数据结构。

            缓存策略

            页面级缓存:对不常变页面生成静态HTML缓存(如Varnish, Nginx缓存)。

            片段缓存:缓存页面中部分内容(如使用Memcached或Redis存储数据库查询结果)。

            数据库优化:建立索引、优化查询语句、使用主从复制。

            异步处理:耗时任务(发邮件、图片处理)放入队列(如RabbitMQ, Beanstalkd)异步执行,快速响应请求。

           案例1:启用OPcache。在`php.ini`中设置 `opcache.enable=1`, `opcache.memory_consumption=128` 等参数。

           案例2:使用Redis缓存热门文章数据。避免每次请求都查询数据库:

           php

           $redis = new Redis();

           $redis->connect('127.0.0.1', 6379);

           $cacheKey = 'top_10_articles';

           if (!$articles = $redis->get($cacheKey))

            $articles = fetchTopArticlesFromDB(); // 耗时操作

            $redis->setex($cacheKey, 3600, serialize($articles)); // 缓存1小时

           

           

           案例3:优化数据库查询。将N+1查询(循环中逐条查询)改为单条JOIN查询获取所有关联数据。

           10. 现代框架与架构:超越原始脚本

           大型应用很少直接编写原始`.php`脚本。现代PHP开发依赖框架(Framework)和设计模式:

            MVC架构 (Model-View-Controller):分离业务逻辑(Model)、数据展示(View)和请求处理(Controller)。框架如Laravel, Symfony, CodeIgniter, CakePHP强制或鼓励此模式。

            框架核心价值:提供路由、ORM(对象关系映射)、模板引擎、依赖注入、认证授权、测试工具等组件,标准化开发,提升效率和可维护性。

            Composer与PSR标准:Composer管理依赖,遵循PHP-FIG的PSR标准(如PSR-4自动加载)确保组件互操作性。

            面向服务架构 (SOA) / 微服务:PHP文件常作为API端点构建微服务。

           案例1:Laravel路由 (`routes/web.php`)。定义URL到Controller方法的映射:`Route::get('/user/id', [UserController::class, 'show']);`。请求`/user/123`会执行`UserController->show(123)`。

           案例2:Eloquent ORM (Laravel)。`User::find(1)` 生成并执行SQL `SELECT FROM users WHERE id = 1`,返回User模型对象。操作数据库无需写原生SQL。

           案例3:Blade模板引擎 (Laravel)。`view('profile', ['user' => $user])` 渲染视图文件`profile.blade.php`,其中使用` $user->name `安全输出数据,支持模板继承`extends('layouts.app')`。

           11. 命令行接口 (CLI):超越Web的应用

           PHP文件不仅服务于Web。通过PHP命令行接口(CLI),`.php`文件可作为独立脚本执行:

            运行方式:终端执行 `php script.php [arguments]`。

            用途广泛

            定时任务(Cron Jobs):数据备份、报表生成、队列消费。

            后台守护进程(Daemons):持续运行的服务(需进程管理如Supervisor)。

            构建脚本/开发工具:自动化部署、数据库迁移(如Laravel Artisan `php artisan migrate`)。

            数据处理:批量导入/导出、日志分析。

            访问参数:通过`$argv`数组获取命令行参数,`$argc`获取参数数量。

           案例1:Cron定时清理日志。`0 3 php /var/www/myapp/cleanup_logs.php > /dev/null 2>&1` 每天凌晨3点执行清理脚本。

           案例2:使用Artisan命令。`php artisan make:controller UserController` 在Laravel项目中创建新的控制器文件。

           案例3:CLI数据处理脚本 (`import_users.php`)。读取CSV文件 (`fgetcsv`),验证数据,批量插入数据库。执行 `php import_users.php users.csv`。

           12. 版本演进:从PHP 3到PHP 8.x

           PHP语言和`.php`文件支持的特性持续进化:

            PHP 5.x:成熟OOP支持(访问控制、接口、异常处理)、PDO、改进性能。

            PHP 7.x:革命性性能提升(Zend Engine 3.0)、标量类型声明、返回类型声明、太空船操作符`<=>`、空合并操作符`??`。

            PHP 8.x:JIT编译器(进一步提升性能)、联合类型(`string|int`)、`match`表达式、`nullsafe`操作符(`?->`)、命名参数、属性(Attributes)、枚举(Enums)、纤程(Fibers)。

           新特性直接影响`.php`文件的编写方式和能力。开发者应关注官方迁移指南([php.net/manual/appendices](https://www.php.net/manual/appendices.php))升级代码。

           案例1:PHP 7 标量类型与返回类型。`function add(int $a, int $b): int return $a + $b; ` 提升代码健壮性。

           案例2:PHP 8 `match`表达式 (替代复杂`switch`):

           php

           $status = match($httpCode)

            200 => 'OK',

            301, 302 => 'Redirect',

            404 => 'Not Found',

            500 => 'Server Error',

            default => 'Unknown'

           ;

           

           案例3:PHP 8 命名参数。调用函数时按名称指定参数,提高可读性:`setcookie(name: 'Test', value: $value, httponly: true);`

           13. 生态系统:繁荣的库与社区

           PHP的成功离不开其庞大的生态系统:

            Packagist:PHP的主要包仓库,托管超过35万个Composer包(截至2023年)。

            丰富库支持:几乎所有需求都有现成库解决:HTTP客户端(Guzzle)、模板引擎(Twig)、日志(Monolog)、测试(PHPUnit, Pest)、PDF生成(Dompdf, TCPDF)等。

            内容管理系统 (CMS):WordPress (全球CMS市场超60%份额)、Drupal、Joomla、Magento (电商) 等均由PHP驱动。

            活跃社区:Stack Overflow、PHP Subreddit、PHP Fig、各地用户组、大型会议(如PHP Central Europe, PHP UK)提供强大支持。

           案例1:使用Guzzle发送HTTP请求:

           php

           $client = new GuzzleHttp\Client();

           $response = $client->request('GET', 'https://api.example.com/data');

           $data = json_decode($response->getBody());

           

           案例2:WordPress插件开发。插件核心文件 (`my-plugin.php`) 遵循特定头部注释规范,利用WordPress提供的钩子(Hooks)和函数扩展功能。

           案例3:使用PHPUnit进行单元测试 (`UserTest.php`):

           php

           class UserTest extends TestCase

            public function testFullName()

            $user = new User('John', 'Doe');

            $this->assertEquals('John Doe', $user->getFullName());

           

           

           

           14. 何时选择PHP?适用场景分析

           PHP文件(即PHP技术)是理想选择当:

            项目核心是Web应用:尤其是内容驱动型(博客、新闻、企业站)、电商、社区论坛、CRM等。

            需要快速开发与迭代:丰富的框架和库显著加速开发。

            预算有限或需要高性价比托管:PHP主机方案(共享主机/VPS)普遍且成本较低。

            集成现有流行系统:如需要与WordPress、Magento或其他PHP系统深度集成。

            团队拥有PHP技能:PHP开发者资源丰富。

           对于计算密集型任务(如科学计算)、原生桌面应用或特定领域(如嵌入式系统),其他语言可能更合适。

           案例1:初创公司构建最小可行产品(MVP)电商平台。选择Laravel + Livewire快速开发前后端功能,利用成熟的支付、物流库集成。

           案例2:个人博主建立网站。使用WordPress(PHP CMS),选择经济型共享主机,安装主题和插件定制功能,无需深入编程。

           案例3:企业需要将内部传统系统(PHP)与新的CRM(如SuiteCRM,PHP)集成。PHP间集成通常更直接。

           15. 常见误解澄清

           关于PHP和`.php`文件存在一些常见误解需要澄清:

            误解:PHP是过时/低效的语言:事实:PHP 7/8 性能已极大提升(常优于Python、Ruby),现代框架和工具链使其非常高效和现代化。Facebook(HHVM/Hack起源)、Wikipedia、Slack等大型应用依赖PHP。

            误解:PHP只能用于简单网站:事实:PHP驱动着极其复杂的系统,如Magento 2(大型电商平台)、Symfony(企业级框架)、Baïkal(CalDAV/CardDAV服务器)。

            误解:PHP文件不安全:事实:安全性取决于开发者实践而非语言本身。遵循安全最佳实践的PHP应用(如使用预处理语句防SQL注入、转义输出防XSS)非常安全。

            误解:PHP缺乏良好设计:事实:现代PHP(>=5.4)支持健壮的OOP、设计模式、类型系统(逐步增强)、接口、Traits等。框架强制良好架构。

           案例1:性能对比。基准测试显示PHP 8使用JIT在特定计算任务上可比肩甚至超越Node.js或Go (参考 [TechEmpower Benchmarks](https://www.techempower.com/benchmarks/))。

           案例2:复杂应用。Adobe Commerce (原Magento Commerce) 为全球顶级电商平台之一,处理高并发、复杂业务逻辑,完全基于PHP。

           案例3:安全实践。OWASP PHP Security Project ([https://owasp.org/www-project-php-security/](https://owasp.org/www-project-php-security/)) 提供详尽的PHP安全指南和工具。框架如Laravel内置了CSRF保护、安全的密码哈希等。

           16. 未来展望:持续创新

           PHP的未来发展聚焦于:

            性能持续优化:JIT编译器(PHP 8引入)的进一步调优和应用,提升CPU密集型任务性能。

            类型系统增强:向更严格的类型安全演进(如更多内置函数支持类型、改进的类型推断)。

            并发模型探索:Fibers(PHP 8.1引入)提供轻量级协程支持,结合事件循环库(如RevoltPHP)改善异步I/O处理能力。

            开发体验提升:工具链(静态分析工具如Psalm, PHPStan)、IDE支持、调试工具的持续改进。

            WebAssembly (Wasm):探索将PHP编译为Wasm,在浏览器或边缘环境运行PHP逻辑的可能性(如[php-wasm](https://php-wasm.io/)项目)。

           案例1:PHP 8.3 引入只读属性改进、更灵活的JSON验证、`[\Override]`属性等。路线图关注JIT改进、类型系统增强。

           案例2:使用ReactPHP或Amp进行异步编程。创建非阻塞HTTP服务器处理高并发连接:

           php

           $server = new React\Http\HttpServer(function (Psr\Http\Message\ServerRequestInterface $request)

            return new React\Http\Message\Response(200, ['Content-Type' => 'text/plain'], "Hello World!\n");

           );

           $socket = new React\Socket\SocketServer('0.0.0.0:8080');

           $server->listen($socket);

           

           案例3:PHP-Wasm演示。将PHP解释器编译为Wasm,在浏览器中运行PHP代码片段,为特定场景(如沙盒运行用户提交代码)提供新思路。

           理解".php是什么文件"是掌握Web开发的关键起点。它远不止一个简单的文本文件,而是承载着服务器端动态逻辑、数据库交互和复杂业务规则的核心载体。从基础的文件结构、执行机制、语法核心到现代框架应用、性能优化、安全实践及未来趋势,PHP文件展现了其作为Web基石技术的强大适应力和持续生命力。无论是构建简单的个人博客还是支撑亿级用户的平台,深入掌握`.php`文件的本质与运用之道,将为开发者打开广阔的数字世界大门。

    相关文章
    惠普打印机墨盒怎么加墨惠普打印机墨盒加墨教程介绍 图文教程 ...
    本文提供惠普打印机墨盒详细加墨教程,涵盖工具准备、墨盒识别、分步操作及故障处理。适用于主流型号如60/61、950/951系列,包含防漏墨技巧与芯片复位方法,助您安全延长墨盒寿命。
    2025-07-20 15:36:58
    94人看过
    笔记本如何无线上网笔记本设置无线网络方法 图文步骤
    笔记本电脑无线网络设置是提升移动办公效率的核心技能。本文提供Windows与macOS双系统下12种无线上网解决方案,涵盖驱动更新、网络诊断、热点共享等全场景操作。通过运营商APN设置、企业级VPN配置等真实案例,解析5GHz频段优化、WPA3安全协议应用等关键技术。无论您是咖啡馆自由职业者还是跨国会议参与者,都能获得即学即用的专业指南。
    2025-07-20 15:36:54
    245人看过
    行货和水货有哪些区别行货和水货区别介绍
    行货和水货的区别是消费者在购物时经常困惑的问题,涉及定义、来源、价格、保修等多个层面。本文基于权威资料,系统解析12个核心区别点,包括电子产品、汽车和奢侈品等案例,帮助用户规避风险并做出明智选择。
    2025-07-20 15:35:44
    250人看过
    什么是计算机网络?
    计算机网络是现代数字世界的核心基础设施,连接设备实现数据和资源共享。本文将权威解析什么是计算机网络定义,追溯其历史发展,剖析硬件组件、软件协议及各种网络类型。通过真实案例如互联网起源和企业应用,结合IETF和IEEE标准,提供深度实用的见解,帮助读者掌握其运作机制与社会影响。
    2025-07-20 15:35:25
    274人看过
    iPhone7home键失灵怎么办iPhone7home键失灵解决方法
    iPhone 7 用户们,如果您遇到 Home 键失灵问题,别担心!本指南提供实用的 苹果7home键失灵修复方法,涵盖 12 个专业步骤,从简单重启到硬件维修。基于苹果官方资料,每个方法配真实案例,助您快速解决。
    2025-07-20 15:35:07
    245人看过
    360浏览器如何关掉弹窗广告360浏览器关掉弹窗广告方法 教程 ...
    在浏览网页时,突如其来的弹窗广告不仅干扰视线,还可能携带安全风险,尤其在使用360浏览器时。本教程提供12种权威方法,从基础设置到高级技巧,帮助用户彻底关闭360浏览器弹窗广告。基于360官方文档和最佳实践,每个步骤均配有实例,确保操作简单、效果持久。无论你是新手还是资深用户,都能提升浏览体验,享受更纯净的网络环境。
    2025-07-20 15:35:06
    257人看过