2011-11-22 1 views
2

내가 쓴 것은 다른 도메인에 저장된 자바 스크립트 파일의 로컬 복사본을 제공하는 PHP 스크립트입니다. Google Analytics 나 제 경우에는 Wordpress Stats와 같은 추적 목적으로 사용되는 JS 파일입니다. 다음과 같이PHP를 사용하여 자바 스크립트 파일의 로컬 복사본을 저장하고 유지하는 방법 (병렬 처리를 염두에두고)?

의도를 추가하는 것입니다 내 자신 :

mysite.com/somepath/wpstats.js.php?w=201145 

("w = 올해 WEEK_NUMBER 주차"이 원본에 대한 wordpress.com 그들의 캐시 만료에 의해 같은 방식으로 사용된다. JS 파일은 1 년이므로 JS 파일은 주 1 회 이상 변경되지 않습니다.

wpstats.js.php에서 w = xx가 변경되면 wordpress.com에서 올바른 파일을 다운로드하고 싶습니다. 로컬에서 보관 된 복사본에서 반환하려고합니다.

"w_current"라는 하나의 내부 변수를 사용하여 구현할 수 있습니다. 따라서 새로운 방문자가 사이트에 들어 오면 두 번째 주인 w != w_current이 새로 가져 오기를 트리거합니다. 문제는 다음과 같습니다. 두 웹 사이트 방문자가 두 번째 주에 처음으로 웹 사이트를 동시에로드 할 때 발생할 수있는 경쟁 조건/병렬 문제를 방지하려면 어떻게해야합니까 [1]?

[1] 모두 아파치 프로세스는 w != w_current 평가하고 wpstats.js 파일의 (잠재적) 새 버전이 다운로드를 시작하고 모두 wpstats 로컬 복사본 (예 : own_wpstats.js)에 기록하려고합니다. (로컬 복사본이 이미 존재하는 일반적인 경우) js.php 포함한다 :

if ($_GET["w"] == w_current) require("own_wpstats.js"); 

이 (어쩌면 다른 인 성능)을 수행하는 주요 이유는 사실에 기인하다 Wordpress.com 통계 주입한다 (비아 DOM)은 제삼자 인 quantserve.com에서 제공하는 추가 JS 추적 파일입니다. 내 로컬에서 보관 된 "WP JS 파일"에서는이 quantserve.com 항목이 제외되었음을 확인합니다. 그러나 여기에서 묻는 질문과는 별도의 프로그래밍 문제입니다. "quantserve.com 추적 쿠키"를 검색하면 많은 불편한 결과가 발생합니다.

답변

0

그런 경쟁 조건에 대해서는 도 너무 많습니다.. "최악의 경우"는 파일을 두 번 다운로드 한 것입니다.

하지만 DB에서 이러한 파일을 추적하려고한다면 이중 다운로드를 방지하는 것이 간단 할 것입니다. 다운로드를 시작하기 직전에 파일을 새로 고침해야하는지 DB를 확인하고 새로 고침을 DB에 기록한 다음 다운로드를 수행하십시오. 파일에 고유 기본 키 (site_url + file_name)를 지정하면 업데이트 전에 두 번째 검사가 실패합니다.

+0

답장을 보내 주셔서 감사합니다. 다중 다운로드가 아닌 중복 편집 (수동으로 부분적으로 수행됩니다. 사용하기 전에 "새"편집 된 버전을 검토하고 싶습니다). 내가 실제로 DB 테이블을 사용하는 방법에 대해 설명했지만 거래를 사용하여 "안전한"구현을 할 수 있어야한다는 데 동의합니다. 단순하고 다른 유사한 상황에서 잠재적 인 사용을 위해 필자는 지금은 파일 전용 솔루션에 집중할 것이라고 생각합니다. 드문 경우이지만 관리자가 보류중인 새 파일에 대해 두 번/여러 번 알림을받을 수 있다는 사실을 무시하십시오. . – rtv

+0

직접 검토해야하는 특별한 이유가 있습니까? 아주 특정한 것을 제외 시키려고한다는 것을 미리 안다면, 그 파일의 더미 버전을 만들고 포함 된 src/path를 수정하면됩니다. quantserve가 파일을 변경할 때마다 수동 개입이 필요합니다. –

관련 문제