检测同步上传过程

时间:2012-09-21 13:46:07

标签: php jquery ajax session cookies

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

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

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

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

由于

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分: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" ;
}