2

phpを使用して、1つのプロセスで2つの別々のサーバーにファイルをアップロードしています。おそらく、それが完了するまでには少し時間がかかります。

ここで、エンドユーザーは別のアップロードのために別のウィンドウを開く可能性があり、そのような同時プロセスの数は増加します。その結果、現在実行中のアップロードプロセスに影響を与え、望ましくない結果を出力します。

したがって、複数(または少なくとも3番目)の同時ファイルアップロードプロセスを無効にしたいのです。ユーザーが他のユーザーが完了する前に2回目または3回目にファイルをアップロードしようとすると、警告が表示されます。

phpセッションCookie/JqueryAjaxを使用して実装する方法を教えてください。

ありがとう

4

2 に答える 2

0

アップロードが完了するまで、session_idを読み取り、そのセッションのフラグをどこかに保存できます。新しいアップロードを受け入れる前に、フラグの存在(または値の数)を確認してください。アップロードが完了したら、フラグを削除(または値を減らし)します。ストレージは、サーバー内のdbまたはファイルにすることができます。または、匿名のアップロードがない限り、session_idの代わりにuser_idを使用します。これはとにかくあまり良い考えではありません。

于 2012-09-21T13:50:21.593 に答える
0

アップロードプロセスを追跡するために使用できる中央システムが必要な複数のサーバーで作業するため、Memcacheを使用すると簡単にこれを実現できます

$maxAllowedProcess = 1;
$uploadKey = "uploadProcess";
$memcache = new \Memcache();
$memcache->connect('localhost', 11211);
$runtime = (int) $memcache->get($uploadKey);

if ($runtime >= $maxAllowedProcess) {
    echo "Sorry you can not upload at the moment tay again in 30mins" ;
} else {
    $runtime ++;
    $memcache->set($uploadKey, $runtime);

    // Stat upload Process on any server
    // example move_uploaded_file($filename, $destination) ;;

    $runtime = (int) $memcache->get($uploadKey);
    $runtime = ($runtime < 1) ? 0 : $runtime ++;
    $memcache->set($uploadKey, $runtime);

    echo "Upload Sucessfull" ;
}
于 2012-09-21T14:42:14.233 に答える