目次
ブレークスルー48MB制限:JS、PHP、Apacheビデオスライシングアップロードソリューション
問題:48MBアップロードボトルネック
コード分​​析と改善
ソリューションの概要
ホームページ バックエンド開発 PHPチュートリアル JS、PHP、Apacheを使用してビデオタイルをアップロードするときに、48MBを超えるファイルをアップロードできないという問題を解決する方法は?

JS、PHP、Apacheを使用してビデオタイルをアップロードするときに、48MBを超えるファイルをアップロードできないという問題を解決する方法は?

Apr 01, 2025 am 11:00 AM
apache 500エラー

JS、PHP、Apacheを使用してビデオタイルをアップロードするときに、48MBを超えるファイルをアップロードできないという問題を解決する方法は?

ブレークスルー48MB制限:JS、PHP、Apacheビデオスライシングアップロードソリューション

小規模なプロジェクト開発では、大規模なファイルのアップロードを処理することは、しばしば課題に遭遇します。この記事では、JavaScript、PHP、およびApacheを使用してビデオスライスをアップロードする際の48MBのファイルサイズ制限を克服する方法を共有します。

問題:48MBアップロードボトルネック

このプロジェクトは、2GBファイル、スライスあたり1MB、最大2,000個のピース​​を理論的にサポートするスライスアップロードスキームを採用しています。ただし、実際のテストでは、48MB以上(約48個)をアップロードした後、その後のリクエストは500エラーを返します。スライスサイズが10MBにサイズ変更されている場合でも、問題は持続します。

コード分​​析と改善

JavaScriptコード:

元のコードでは、 FormDataオブジェクトは1回だけ初期化され、各リクエストがすべてのアップロードされたスライスデータを運ぶことになり、最終的にApacheのfcgidmaxrequestlen制限を超えました。

改善されたJavaScriptコードは次のとおりです。重要なのは、各リクエストが送信される前にFormDataオブジェクトを再インにインストールすることです。

関数VideFileupload(){
    const length = 1024 * 1024; // 1MB
    開始= 0;
    終了=開始長。
    let blob_num = 1;
    is_stop = 0とします。

    this.start = function(){
        const file = files.files [0];
        const blob = cutfile(file);
        sendfile(blob、file);
        blob_num;
    }

    // ...(コードの残りの部分は同じままです)...

    関数sendfile(blob、file){
        if(is_stop === 0){
            const xhr = new xmlhttprequest();
            const form_data = new formdata(); //キー:毎回formdataを復活させます

            const total_blob_num = math.ceil(file.size / length);
            form_data.append( 'file'、blob);
            form_data.append( 'blob_num'、blob_num);
            form_data.append( 'total_blob_num'、total_blob_num);
            form_data.append( 'file_name'、file.name);

            xhr.open( 'post'、 '/upload.php'、false);
            // ...(コードの残りの部分は同じままです)...
        }
    }

    // ...(コードの残りの部分は同じままです)...
}
ログイン後にコピー

PHPコード:

PHPコードのファイルのマージロジックには、メモリ効率の問題がある場合があります。特大ファイルの場合、すべてのスライスを一度にメモリに読み込むことを避けるために、ストリーミングを推奨します。 (元のコードが明らかなメモリリークや効率の問題を提供しないため、PHPコードはここで省略されており、改善の焦点はJS側にあります)

ソリューションの概要

問題の中核は、JavaScriptコードのFormDataオブジェクトの再利用にあります。各リクエストの前にFormDataオブジェクトを復活させることにより、データの蓄積は回避され、48MBのアップロード制限が解かれます。 PHP側の場合、大きなファイルを処理するときにメモリの問題が発生した場合、ファイルのマージロジックをさらに最適化し、ストリーミング処理を採用する必要があります。この改善ソリューションは、大きなファイルアップロードの問題を効果的に解決し、ビデオスライスアップロードの安定性と信頼性を保証します。

以上がJS、PHP、Apacheを使用してビデオタイルをアップロードするときに、48MBを超えるファイルをアップロードできないという問題を解決する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

H5プロジェクトの実行方法 H5プロジェクトの実行方法 Apr 06, 2025 pm 12:21 PM

H5プロジェクトを実行するには、次の手順が必要です。Webサーバー、node.js、開発ツールなどの必要なツールのインストール。開発環境の構築、プロジェクトフォルダーの作成、プロジェクトの初期化、コードの書き込み。開発サーバーを起動し、コマンドラインを使用してコマンドを実行します。ブラウザでプロジェクトをプレビューし、開発サーバーURLを入力します。プロジェクトの公開、コードの最適化、プロジェクトの展開、Webサーバーの構成のセットアップ。

サーバー側でキャラクターエンコードを設定する方法ブートストラップテーブルを解決する方法 サーバー側でキャラクターエンコードを設定する方法ブートストラップテーブルを解決する方法 Apr 07, 2025 pm 12:00 PM

サーバー側に文字エンコードを設定して、文字化けしたブートストラップテーブルを解決するには、次の手順に従う必要があります。サーバー文字のエンコーディングを確認します。サーバー構成ファイルを編集します。 EncodingをUTF-8に設定します。サーバーを保存して再起動します。エンコーディングを確認します。

ApacheでCGIディレクトリを設定する方法 ApacheでCGIディレクトリを設定する方法 Apr 13, 2025 pm 01:18 PM

ApacheでCGIディレクトリを設定するには、次の手順を実行する必要があります。「CGI-Bin」などのCGIディレクトリを作成し、Apacheの書き込み許可を付与します。 Apache構成ファイルに「Scriptalias」ディレクティブブロックを追加して、CGIディレクトリを「/cgi-bin」URLにマッピングします。 Apacheを再起動します。

Apacheを始める方法 Apacheを始める方法 Apr 13, 2025 pm 01:06 PM

Apacheを開始する手順は次のとおりです。Apache(コマンド:sudo apt-get install apache2または公式Webサイトからダウンロード)をインストールします(linux:linux:sudo systemctl start apache2; windows:apache2.4 "serviceを右クリックして「開始」を右クリック) (オプション、Linux:Sudo SystemCtl

Debian OpenSSL構成を確認する方法 Debian OpenSSL構成を確認する方法 Apr 12, 2025 pm 11:57 PM

この記事では、DebianシステムのOpenSSL構成を確認して、システムのセキュリティステータスをすばやく把握できるように、いくつかの方法を紹介します。 1.最初にOpenSSLバージョンを確認し、OpenSSLがインストールされているかどうかを確認し、バージョン情報を確認します。端末に次のコマンドを入力します。OpenSSlversionがインストールされていない場合、システムはエラーを促します。 2。構成ファイルを表示します。 OpenSSLのメイン構成ファイルは、通常/etc/ssl/openssl.cnfにあります。テキストエディター(Nanoなど)を使用して、次のように表示できます。sudonano/etc/ssl/openssl.cnfこのファイルには、キー、証明書、暗号化アルゴリズムなどの重要な構成情報が含まれています。 3。OPEを利用します

Debian Apacheログを使用してWebサイトのパフォーマンスを向上させる方法 Debian Apacheログを使用してWebサイトのパフォーマンスを向上させる方法 Apr 12, 2025 pm 11:36 PM

この記事では、Debianシステムの下でApacheログを分析することにより、Webサイトのパフォーマンスを改善する方法について説明します。 1.ログ分析の基本Apacheログは、IPアドレス、タイムスタンプ、リクエストURL、HTTPメソッド、応答コードなど、すべてのHTTP要求の詳細情報を記録します。 Debian Systemsでは、これらのログは通常、/var/log/apache2/access.logおよび/var/log/apache2/error.logディレクトリにあります。ログ構造を理解することは、効果的な分析の最初のステップです。 2。ログ分析ツールさまざまなツールを使用してApacheログを分析できます。コマンドラインツール:GREP、AWK、SED、およびその他のコマンドラインツール。

Apache80ポートが占有されている場合はどうすればよいですか Apache80ポートが占有されている場合はどうすればよいですか Apr 13, 2025 pm 01:24 PM

Apache 80ポートが占有されている場合、ソリューションは次のとおりです。ポートを占有するプロセスを見つけて閉じます。ファイアウォールの設定を確認して、Apacheがブロックされていないことを確認してください。上記の方法が機能しない場合は、Apacheを再構成して別のポートを使用してください。 Apacheサービスを再起動します。

Apacheのデータベースに接続する方法 Apacheのデータベースに接続する方法 Apr 13, 2025 pm 01:03 PM

Apacheはデータベースに接続するには、次の手順が必要です。データベースドライバーをインストールします。 web.xmlファイルを構成して、接続プールを作成します。 JDBCデータソースを作成し、接続設定を指定します。 JDBC APIを使用して、接続の取得、ステートメントの作成、バインディングパラメーター、クエリまたは更新の実行、結果の処理など、Javaコードのデータベースにアクセスします。

See all articles