使用 php,我在一个进程中将文件上传到两个单独的服务器。可能,这需要一些时间才能完成。
在这里,最终用户可能会打开另一个窗口进行另一个上传,这样同时处理的数量会增加。因此,这将影响当前正在运行的上传过程以输出不需要的结果。
所以我想禁用多个(或至少第三个)同时文件上传过程。当用户在其他人完成之前第二次或第三次尝试上传文件时,他应该得到警告。
任何人都请指导我如何使用 php session cookies / Jquery Ajax 实现?
谢谢
您可以使用 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" ;
}
您可以读取 session_id 并在某处保存该会话的标志,直到完成上传。在接受新的上传之前检查标志是否存在(或值计数)。上传完成后,删除(或减小值)该标志。存储可以是数据库或服务器中的文件。或者使用 user_id 代替 session_id,除非您有匿名上传 - 无论如何这不是一个好主意。