


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 サイトの他の関連記事を参照してください。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

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

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

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

ホットトピック











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

Apacheサーバーでバージョンを表示するには3つの方法があります。コマンドライン(Apachectl -vまたはapache2ctl -v)を介して、サーバーステータスページ(http://< server ipまたはdomain name>/server -status)を確認します。

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

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

Apacheバージョンを表示する方法は? Apache Serverを起動する:sudo service apache2を使用してサーバーを起動します。バージョン番号の表示:次のメソッドのいずれかを使用してバージョンを表示します。コマンドライン:apache2 -vコマンドを実行します。サーバーステータスページ:WebブラウザーでApacheサーバーのデフォルトポート(通常80)にアクセスすると、バージョン情報がページの下部に表示されます。

ApacheでZendを構成する方法は? Apache WebサーバーでZend Frameworkを構成する手順は次のとおりです。ZendFrameworkをインストールし、Webサーバーディレクトリに抽出します。 .htaccessファイルを作成します。 Zend Application Directoryを作成し、index.phpファイルを追加します。 Zend Application(Application.ini)を構成します。 Apache Webサーバーを再起動します。

Apacheは、次の理由で起動できません。構成ファイル構文エラー。他のアプリケーションポートとの競合。権限の問題。メモリから。デッドロックを処理します。デーモン障害。 Selinux許可の問題。ファイアウォールの問題。ソフトウェアの競合。

Apacheから追加のservernameディレクティブを削除するには、次の手順を実行できます。追加のservernameディレクティブを識別して削除します。 Apacheを再起動して変更を有効にします。構成ファイルを確認して、変更を確認します。サーバーをテストして、問題が解決されていることを確認します。
