使用php,我在一个进程中将文件上传到两个单独的服务器。可能需要一些时间才能完成。
在这里,最终用户可能会打开另一个窗口进行另一次上传,并且此类同时进程的数量会增加。因此,这将影响当前正在运行的上传过程以输出不需要的结果。
所以我想禁用多个(或至少第三个)同步文件上传过程。 当用户尝试在完成其他人之前第二次或第三次上传文件时,他应该收到警告。
任何人都可以指导我如何使用php session cookies / Jquery Ajax实现?
由于
答案 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" ;
}