2012-09-21 6 views
2

PHP를 사용하여 하나의 프로세스에서 2 개의 개별 서버로 파일을 업로드합니다. 아마, 그것은 완료하는 데 약간의 시간이 걸릴 것입니다.동시 업로드 프로세스 감지

여기에서 최종 사용자가 다른 업로드를 위해 다른 창을 열어서 이러한 동시 프로세스의 수가 증가 할 수 있습니다. 결과적으로 원하지 않는 결과를 출력하기 위해 현재 실행중인 업로드 프로세스에 영향을줍니다.

그래서 여러 번 (또는 적어도 세 번째) 동시 파일 업로드 프로세스를 비활성화하고 싶습니다. 다른 사용자가 완료되기 전에 두 번째 또는 세 번째로 파일을 업로드하려고하면 경고를 받아야합니다.

누구나 나를 PHP 세션 쿠키/Jquery Ajax를 사용하여 구현하는 방법을 안내해 주시겠습니까?

감사

답변

0

당신은 SESSION_ID을 읽고, 업로드를 완료 할 때까지 해당 세션 어딘가에 플래그를 저장할 수 있습니다. 새 업로드를 수락하기 전에 플래그 존재 여부 (또는 값 개수)를 확인하십시오. 업로드가 완료되면 플래그를 삭제 (또는 값을 줄이기)합니다. 저장소는 서버의 파일 또는 db 일 수 있습니다. 어쨌든 아주 좋은 생각이 아닌 익명 업로드가 없으면 session_id 대신 user_id를 사용하십시오. 여러 서버에서 작업 할 것이기 때문에 당신은 쉽게 Memcache는 이것을 달성 할 수

+0

을 업로드 과정 않음 간단한 예를하십시오 추적하는 데 사용할 수있는 중앙 시스템이 필요합니다. 나는 여기에 게시하기 전에 말한대로 노력했다. –

+0

및? 작동하지 않는 것은 무엇입니까? –

0

당신은 당신이

$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" ; 
} 
+0

감사합니다. 하지만 나는 공유 호스트에있어. Memcache 모듈을 설치하는 것은 불가능합니다. 하나의 파일은 Curl을 사용하여 원격 서버로 보내고 다른 하나는 php가 실행중인 부모 서버로 보내집니다. –

+0

다른 저장소를 사용하지만 동일한 개념을 사용할 수는 없습니다. – Baba