Php复制CPU消耗

Php copy CPU consumption

本文关键字:消耗 CPU 复制 Php      更新时间:2023-09-26

我正在创建一个允许用户通过JavaScript插件查看文件的网站。

为了做到这一点,并维护文件的安全性,我将在每次访问JavaScript插件时创建原始文件的一次性唯一副本。

原始文件的最大容量为30mb,对于系统的多个用户,该如何扩展?假设有100个人创建并访问该文件的副本。

您可以通过创建一个htaccess重写来将用户引用到PHP脚本来实现这一点:

RewriteEngine On
RewriteRule ^download/([^/]+) /lib/download.php?file=$1 [QSA]

这将把对yourdomain.com/download/anyfilehere.mp3?one_time_token=ABCDEFG的任何请求转发给lib/download.php,并将$_GET['file']设置为anyfilehere.mp3one_time_token $_GET参数将被转发,因为我们使用的是[QSA]

download.php可以简单地看起来像这样:

<?php
    if (!empty($_GET['file'])) {
        if (!empty($_GET['one_time_token'])) {
            if (TokenOK($_GET['one_time_token'])) { //Create a function called TokenOK where you look up the download token in eg. a database
                $fileName = '/var/www/downloadfolder/' . $_GET['file'];
                if (file_exists($fileName)) {
                    ExpireToken($_GET['one_time_token']); //Create a function called ExpireToken where you expire the token in eg. the database
                    readfile($fileName); //Read the file to the user
                    die();
                } else {
                    die('Error: file not found');
                }
            } else {
                die('Error: token is not OK');
            }
        } else {
            die('Error: token is not specified');
        }
    } else {
        die('Error: file is not specified');
    }
?>

注意事项:

  • 输出mime头类型,指定文件的内容类型
  • 阅读readfile
  • 上的PHP手册条目
  • 限制一次性令牌仅在特定时间范围内有效(并通知您的用户),而不是允许它仅下载一次
  • 如果用户取消下载,因此无法再次下载,您的系统将如何反应?
  • 如果下载失败怎么办?他们需要请求一个新的下载链接吗?
  • 如果它是一个流MP3文件,确保搜索工作(它很可能不会,如果你在MP3已经流到的地方寻找,因为它会创建一个新的MP3文件请求)