2013-05-06 7 views
-1

사용자 정보 (브라우저, 플랫폼, 버전 ...)에 대한 정보를 얻는 PHP 파일을 만들고 싶습니다. 사용자가 모바일에서 온 경우 mp3 파일을 출력합니다 평균 크기 : 20MB.조건에 따라 파일 출력 -

평균적으로 30,000 명의 사용자가 필요하다고 생각합니다. DreamHost 공유 호스팅 계획에 등록합니다.이 계획이 이러한 트래픽, 요청 및 처리를로드 할 수 있다고 생각합니까?

PHP에서 이러한 정보를 가져오고 데이터베이스에 삽입하고 조건에 따라 파일을 출력하는 가장 좋은 방법은 무엇입니까?

+5

하루에 30,000 명 이상의 사용자가 귀하가 원하는 * 것이거나 실제 데이터를 기반으로 한 진지한 비즈니스 계획이 예측하는 것이 있습니까? :) 전자의 경우, 공유 호스팅으로 시작하고 일이 끝나면 위로 이동할 수 있습니다. –

+0

출력중인 파일이 개인화 될 예정입니까 아니면 단순히 동일한 파일을 제공하지만 사용자 자격을 기반으로 배포하는 것입니까? –

+0

@Pekka 웃 현재, 나는 ~ 30,000 명의 사용자가 매일 있고, 나는 그것이 몇 가지 업데이 트 후에 더 많은 것이라고 생각합니다. 어떤 계획을 내 요구 사항에 맞게 dreamhost에 제안 하시겠습니까? – AboZeid

답변

1

사용자가 모바일 장치에 있는지 확인하려면 php-mobile-detect class을 사용할 수 있습니다. 모든 장치를 수용하기 위해 직접 작성하는 것보다 훨씬 쉽습니다.

더 큰 호스팅 계획이 필요한지 여부를 결정하려면 트래픽 패턴을 관찰해야합니다. 30,000 명의 방문자가 많은 방문자입니다. 30,000 건의 페이지 뷰가 시작될 가능성이 더 높습니다 (또는 30,000 건의 방문도 가능). 즉 서버로드는 모두 올 때마다 달라집니다. 한 번에 같은 파일을 다운로드하여 컴퓨터에 연결하는 500 명의 방문자가 다운시킬 수 있습니다. DS로 공유 호스팅에서 VPS 계획으로 업그레이드하거나 클러스터의 다른 사용자를 유인하기에 충분한 트래픽을 받고있는 경우 자신이있는 상자로 업그레이드하려고 할 가능성이 큽니다. 링크를 제공하고 합법적 인 트래픽을 제한하는 측면에서 They will also enable throttling if the site requires too much resources.

, 당신은 자신의 세션 ID (SESSION())하는 조회 시간을 ($_SERVER['REMOTE_ADDR'])를 자신의 IP 주소를 확인하고 액세스하는 사람을 방지하기 위해 헤더 리디렉션 스크립트에 그것을 전달할 수 있습니다 공유 링크 :

http://domain.com/download.php?f=04293D&ts=1367827755&t=25d55ad283aa400af464c76d713c07ad 

페이지에서 파일 당신이 (가 로컬 네트워크에 연결하는 것 경우) 동일한 사용자, 동일한 세션입니다 확인하고 타임 스탬프를 제공합니다.

<?php 
    session_start(); 
    if(!empty($_GET['f'])){ 
    $f = $_GET['f']; 
    } else { 
    exit(); 
    } 

    if(!empty($_GET['ts'])&&preg_match('!^[0-9]+$!',$_GET['ts'])){ 
    $tsIn = $_GET['ts']; 
    } else { 
    exit(); 
    } 

    $testHash = md5($_SERVER['REMOTE_ADDR'].session_id().$tsIn.'[email protected]'); 

    if(!empty($_GET['t'])&&$testHash==$_GET['t']){ 

    // We'll be outputting an MP3 
    header('Content-type: audio/mpeg'); 

    // It will be called audio.mp3 
    header('Content-Disposition: attachment; filename="audio.mp3"'); 

    // To prevent mining the MP3 source is in the safe folder named '/._mp3s_safe/' 
    readfile($_SERVER['DOCUMENT_ROOT'].'/._mp3s_safe/original.mp3'); 

    } else { 
     exit(); 
    } 
?> 

나는이 코드에 포함시키지 않았지만 특정 시간 내에 파일이 요청되었는지 확인할 수도 있습니다. 사용자가 이메일 주소를 제공하도록 요구함으로써 사용자를 확인한 다음 트래픽이 문제가되는 경우 파일을 다운로드 할 링크를 이메일로 발송할 수도 있습니다. 또한 타임 스탬프 해싱 메서드를 사용하여 누군가 프로그램 다운로드를 사용하고 있는지 확인할 수 있습니다. 그들이 파일을 너무 빨리 다운로드했거나 너무 많은 다른 다운로드를 열어 둔다면 파일을 기다리거나 스크립트가 컴퓨터에서 너무 많은 트래픽에 대한 오류와 함께 멈추도록 할 수 있습니다.

0

사용자 브라우저를 이용하려면 다음을 사용할 수 있습니다. $_SERVER['HTTP_USER_AGENT'] 자세한 내용은 $_SERVER을 참조하십시오.