2017-02-23 10 views
-1

cakephp3.0 Webアプリケーションを開発中です。その中にアップロードビデオページがあります。ユーザーは最大2GBのn個の動画をアップロードできます。だから、マルチパートとして、順番にビデオをアップロードしています。 forループを使用した繰り返しのように、最初のビデオが来ると、2番目のビデオが来るでしょうが、問題は、このアップロードタスクを完了して応答を得るために長い間待つ必要があるということです。私は同時に複数のビデオを異なるキューにアップロードするような並行した方法でこのアップロードをしたいと思います。アップロードが非常に速く完了できるようにします。 PHPでマルチプロセッシングを行う方法はありますか?PHPでのParllel処理

+3

1つのTCP接続は、クライアントとサーバーの間で利用可能なアップロード帯域幅外に最大になっています。並行して複数のファイルをアップロードする*は、それらを連続してアップロードするよりも速くすべきではありません。各アップロードは単に遅くなります。たぶん実際には違いが少しありますが、順次アップロードからパラレルアップロードに切り替えることで突然 "非常に速く"なることはありません。これは、サーバの帯域幅がボトルネックであり、パラレルアップロードが複数のサーバに分散する場合にのみ効果があります。しかし、クライアントはおそらくボトルネックになりそうです。 – deceze

+0

@decezeのように - あなたは帯域幅を最大限に活用しています。フルアップロード速度を使用して1つのファイルをアップロードする場合とフルアップロード速度を使用して10のファイルをアップロードする場合はどうなると思いますか?あなたはまだ完全なアップロード速度を使用していますが、それが何であれ、何が速くなるのだろうと思っているのですか?また、PHPと何が関係しているのでしょうか?それはファイルを受け取る責任もなく、Webサーバーはあります。 – Mjh

+0

問題は、他のユーザーが他のいくつかのビデオをアップロードしようとした場合に、非常に多くのビデオをアップロードしたときに、ユーザーがキューにも入ってしまうことです。だから適切な管理が必要なのを避けるために –

答えて

1

並行してアップロードする場合は、クライアントのアップロード/サーバーのダウンロード速度をパラレルアップロードの数に分割します。シーケンシャルにアップロードすると、1つのファイルに対してこのスピードを最大にします。したがって、最終結果はまったく同じになります。

フォーム提出を行っている場合、すべてのアップロードが成功するまで、ユーザーのブラウザは実際にロックされます。それに関係なく、そこにとどまるためにユーザーが必要ですが、何が起こっているかをユーザーに伝えるUXソリューションが必要です。

だからこそ、フォーム提出を傍受し、javascriptを使ってそれぞれ(順番に)アップロードする必要があります。次に、UXを追加して、ユーザーにいくつかの進捗状況を見せることもできます。

あなたはここにJSでアップロードするにはより多くの情報を見つけることができます。

https://w3c.github.io/FileAPI/#FileReader-interface