난 그냥 비슷한 질문 (PHP + MySQL Queue)를 받아,하지만 난 내 문제에 대한 올바른 질문이 아니라는 것을 깨달았지만, 내 질문 :PHP는 + MySQL을주기 큐
에 대한 정답이었다 나는이 MySQL (MyISAM 유형) 사이트에서 작업자가 긁어내는 테이블.
CREATE TABLE `site` (
`id` int(11) NOT NULL auto_increment,
`url` text,
`last_pop` int(13) default NULL,
`md5` varchar(32) default NULL,
`disabled` tinyint(1) default '0',
PRIMARY KEY (`id`),
UNIQUE KEY `md5` (`md5`),
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
내가 필요한 것은 반복없이 작업자 한 곳을 스크랩하는 것입니다. 내가 3 개 사이트와 2 명 근로자가있는 경우 그래서, 시스템은 다음과 같은 작업을 할 필요가 :
ID URL LAST_POP
t4 1 site1 t1 <- worker1 scrap site1
t4 2 site2 t2 <- worker2 scrap site2
t5 3 site3 t3 <- worker1 scrap site3
t6 1 site2 t4 <- worker2 scrap site2
t6 2 site1 t4 <- worker1 scrap site1
t7 3 site3 t5 <- worker2 scrap site3
....
그것은 last_pop ASC에 의한 순환 큐 주문자 같다.
어떻게하면됩니까?
당신이 잠재적으로 결합 할 수있는 값이 충돌하지 않는 한 타임 스탬프 및 스크래핑 상태의 사용. 100 명의 작업자가 있다면 'last_scape'> 101 인 작업을 선택하고 100까지의 작업자 ID에'last_scrape '을 설정하여 작업을 처리하도록 지정하십시오. 필드를 더 큰 값으로 초기화해야합니다. 그렇지 않으면 필드가 이미 모든 작업자에게 잠겨져있는 것처럼 보일 수 있습니다. – gapple
그 정도면 충분합니다. 감사. – inakiabt