2

使用 php,我在一个进程中将文件上传到两个单独的服务器。可能,这需要一些时间才能完成。

在这里,最终用户可能会打开另一个窗口进行另一个上传,这样同时处理的数量会增加。因此,这将影响当前正在运行的上传过程以输出不需要的结果。

所以我想禁用多个(或至少第三个)同时文件上传过程。当用户在其他人完成之前第二次或第三次尝试上传文件时,他应该得到警告。

任何人都请指导我如何使用 php session cookies / Jquery Ajax 实现?

谢谢

4

2 回答 2

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 回答
0

您可以读取 session_id 并在某处保存该会话的标志,直到完成上传。在接受新的上传之前检查标志是否存在(或值计数)。上传完成后,删除(或减小值)该标志。存储可以是数据库或服务器中的文件。或者使用 user_id 代替 session_id,除非您有匿名上传 - 无论如何这不是一个好主意。

于 2012-09-21T13:50:21.593 回答