2011-01-01 6 views
6

저는 PHP CMS 개발자입니다. BitTorrent 기능을 추가하고 싶습니다. CMS는 이미 사용자가 다른 사용자가 다운로드하고 주석을 달 수있는 파일을 업로드 할 수있게하지만, CMS가 BitTorrent를 통해 이러한 다운로드를 토탈 메타 데이터 파일을 통해 제공 할 수 있다면이 기능이 향상 될 수 있다고 생각합니다 (특히 저 대역폭 사이트의 경우). 자석 링크를 통해 업로드 부담을 공유 할 수 있습니다.순수 PHP 토런트 클라이언트?

거기에 기존의 추적기가 많아서 연결할 수 있고 필요한 메타 데이터를 만드는 프로세스가 잘 문서화되어 있기 때문에 꽤 이해하기 쉽지만 퍼즐의 마지막 부분은 다른 사람이 파종 할 경우 (예 : 새로 추가 된 경우) 파일의 시드. 검색하는 동안 시간을 ​​보냈지 만 추적기 나 DHT를 통해 BitTorrent를 통해 파일을 시드하는 PHP 코드를 찾을 수 없습니다. rtorrent, Vuze 등과 같은 급류 응용 프로그램을위한 프론트 엔드가 많이 있지만 순수한 PHP를 찾고 있습니다. 그 이유는 허위로 잠겨있는 공유 호스팅 계정에서 사용자가 만족할 수없는 의존성을 도입하고 싶지 않기 때문입니다. . 누구든지 주위에 떠 다니는 PHP 코드를 알고 있습니까? 아니면 내 자신을 굴려야합니까?

+3

잘 PHP로 작성된 공유 호스팅 계정에서 토런트 씨앗을 원하십니까? 이름 붙여진 가상 호스트와 잘못된 포트의 문제를 해결할 수는 있지만 ... 이론적으로는 가능합니다. 그러나 그것의 명확하게 어리석은, 틀리고 무의미한. –

답변

0

나는 이것이 PHP의 직업이라고 생각하지 않습니다. 내가 올바르게하고 싶은 것을 이해하면 PHP 스크립트가 실행될 수있는 시간 제한 때문에 공유 호스팅에서 전혀 작동하지 않습니다.

허용되는 30 또는 60보다 오래 걸리는 모든 토런트 업로드 또는 다운로드 프로세스 몇 초 후에 다음 페이지로 이동하여 다시 연결하고 작업을 다시 시작해야합니다. 이것이 어떻게 작동하는지 나는 볼 수 없다.

PHP에서 할 수있는 최선의 방법은 시드를 처리하는 토런트 사이트에 파일을 제공하는 것입니다. Clearbits (SO에서 montly 데이터 덤프를 제공하는 데 사용)은 유용 할 수 있습니다 (하지만 무료는 아닙니다).

+0

솔직히 말해서 나는 PHP가 어떤 직업에서도 좋은 도구라고 보지는 않지만, 최악의 서버조차도 (대부분의 경우, 적어도) 성취하기 위해 의존 할 수있는 유일한 요구 사항입니다. 시간 제한은 확실합니다 나는 이보다 더 똑똑한 누군가가이 문제를 이미 해결했기를 바랬다.) 내가 직접해야만한다면 나는 PHP가 가능한 한 많이 시드하도록함으로써 BitTorrent의 탄력적이고 재개 가능한 자연을 남용 할 것이다. 시간이 있고, 내가 할 수있는 한 많은 방법으로 다시 생성하십시오. –

+1

"PHP는 어떤 직업에서나 좋은 도구입니다"그런데 왜 사용합니까? BTW, CLI 스크립트로 제한 시간이 적용되지 않습니다. – frostymarvelous

3

물론 이론적으로는 가능합니다.

명명 된 가상 호스트 및 잘못된 listeing 포트 및 실행 시간 제한 같은 일부 부담이 있지만 이론적으로 사양을 수행하고 PHP에서 모든 작업을 수행 할 수 있습니다. 당신은 소켓을 열고 원시 데이터를 쓸 수 있으므로 이론적으로는 무엇이든 가능합니다.

하지만 완전히 터무니없고 모를 것입니다.

그러나 문제는 새로운 것이 아니며 해결책이 있습니다.

이들을 전파하는 cdns라고합니다.

대부분은 고속 및 낮은 대기 시간 (일반적으로 사용되는 경우)으로 콘텐츠를 전송할 수 있도록 에지 전송을 제공하지만 트래픽을 균형 잡기 위해 사용할 수도 있습니다.

대부분의 cdrs는 corrs 비용이 듭니다.

그러나이 매우 구체적인 문제에 대한 프로젝트가 있습니다. 콘텐츠를 캐시하고 저 대역폭 사이트 용으로 제공하고 거기에서 가져옵니다.

해당 기기는 coral cdn이며, 확인해야합니다. 아마도 가장 많이 사용되는 것들은 akamai, cachefly, 그리고 level3입니다.

0

PHP가 php.ini 파일에서 기본적으로 설정 한 시간 제한을 초과 할 수 있습니다. 그러나 귀하의 호스트가 이것을 본다면 귀하의 계정을 잠글 수 있습니다. 대부분의 공유 호스팅 제공 업체는 기계 리소스의 3 % 이상을 사용하면 계정을 잠급니다. PHP에서 bittorent 클라이언트를 작성하려고하면 전용 머신을 사용하지 않는 한 불합리합니다.

구성 파일이나 모든 요청에 ​​포함 된 파일에 추가하십시오. 당신이 실행해야하기 때문에, 당신은 다음과 같은

이에 대한 자신의 서버가 있어야 장기적으로
$timeout_minutes = 5; 
ini_set('max_execution_time', 60 * $timeout_minutes); 
1

그런 짓을하지 않는 시간 (초)을 지정해야

// A Timeout of 5 minutes 
ini_set('max_execution_time', 300); 

주 귀하의 파일과 (들) 씨앗 (들)와 함께 귀하의 서버에 토런트 클라이언트? 그럼 당신은 PHP를 통해 액세스 할 수, 그것은 빠르고 쉽습니다. Linux 서버의 전송을 통해이 작업을 수행했습니다.

-1

5 년 전이지만 아마존 S3를 사용할 수 있습니다. (다만 일반적인 웹 시드.)

참조 문서 여기 : 당신은 그냥 S3에 공유 서버에서 파일을 업로드 http://docs.aws.amazon.com/AmazonS3/latest/dev/S3Torrent.html

다음 토런트 파일을 배포 그냥 S3에서 나가는 대역폭 지불했다.

+0

이것은 어떤 식 으로든이 질문에 답하지 않고 정확히 내가 찾던 것이 었습니다. 고마워 – wischi

관련 문제