2012-08-03 2 views
0

해당 php 에이전트 파일에 대한 작업을 정의한 에이전트가 있습니다.하지만 1 분 후에 두 번째 에이전트가 실행되고 이전 에이전트 작업이 아직 완료되지 않았습니다 .its 문제가 발생합니다 ..... 모든 에이전트에서 선택한 행에 플래그를 지정합니다. 다른 에이전트가 간섭을받지 않은 새 쿼리를 실행하는 경우mysql 쿼리에서 선택된 행에 플래그 지정

이 쿼리를 변경하는 방법은 선택한 테이블의 필드를 선택하는 것이 가장 좋은 방법입니까?

db::query("SELECT 1000 FROM web-service WHERE `state`= 1 AND `fetch_id`="fetchid" ")// 

한 상태 = 1 내 제품

에 대한 조건이다

2 내가 가장 좋은 방법은 무엇인지 각 에이전트에 전가 ID에 ID를 가져올 사용할 수 있습니까?

+1

* Matrix Revolutions * 이후로 많은 에이전트를 보지 못했습니다. – Matt

+1

¿ 선택 쿼리가 다른 선택 쿼리의 영향을 어떻게 받습니까? 당신은 모든 관련 코드를 표시하지 않습니다. – Alfabravo

+1

@Matt의 대기열과 게이트웨이에 연결할 수 있습니다. 게이트웨이가 늦게 응답하고 에이전트가 2 분이 걸립니다. 제 일은 매 1 분마다이 PHP 파일을 실행합니다. – user1574533

답변

0

질문을 이해하는 경우 여러 스크립트가 동시에 같은 행에서 작동하는 것을 원하지 않습니다. 이것은 contention으로 알려져 있으며 여러 가지 방법으로 해결할 수 있습니다.

과거에이 문제를 해결 한 한 가지 방법은 스크립트가 아직 실행되지 않은 경우에만 스크립트를 실행하는 것입니다. 여기에 정의 된 쉘 스크립트를 통해이 작업을 수행 할 수 있습니다. Shell script: Ensure that script isn't executed if already running

+0

친구가 내가 동시에 2 agnet 작업을 원한다면 자신의 선택 제품을 사용하십시오. – user1574533

+0

제품이 "사용 중"이면 플래그를 추가하고 SELECT 후에는 그것을 설정 한 다음 스크립트가 완료되면 업데이트 할 수 있습니다. – Matt

+0

흠, 그것이 가장 좋은 방법입니까? 예를 들어 mysql이 마녀 열을 지금 선택하고 runing을 인식 할 수 있습니까? 아니면 가장 좋은 방법은 'in use'와 같이 필드를 업데이트하는 것입니까? – user1574533

관련 문제