1

アップロードされる大きなファイルの最初のチャンクで、ファイルの詳細をデータベースに入力します。ユーザーがページから移動した場合。ajax リクエストが送信され、行が削除されます。ただし、接続/電源が落ちた場合、リクエストを送信できず、データベースに孤立したエントリが作成されます.

現在、最後のファイル部分のタイムスタンプを確認し、10 分間にチャンク (1MB) をアップロードしていないものはすべて削除されます。このプロセスをスピードアップできるようにしたいと考えていますが、その時間を短縮すると、インターネット接続が遅いユーザーは、アップロードを待っている間にファイル/レコードが削除される可能性があります.

これまでに 2 つの解決策を考えてきました。1 つ目は、上記で説明したように、現在使用しているものです。2 つ目は、X 秒ごとにユーザーから「キープ アライブ」リクエストを送信することです。サーバーが更新を受信せずに Y 秒経過すると、レコードは破棄されます。

後者はより速く動作するように見えますが、非常に非効率的です。誰かが前にこのようなことをしたことがありますか? それについて行く最善の方法は何ですか?

Ubuntu で Apache を実行しており、jQuery も使用しています。

4

1 に答える 1

2

ユーザーが接続を終了すると (別の場所に移動したり、ブラウザーを閉じたりしても)、Apache サーバーは PHP プロセスを強制終了します (PHP に ignore_user_abort() がない場合)。シャットダウン機能接続状態を確認し、abortedまたはの場合timeoutはファイルを削除します。

于 2012-12-19T11:23:11.397 に答える