Я только что принял подобный вопрос (PHP + MySQL Queue), но я понял, что это не правильный вопрос для моей проблемы, но правильный ответ на мой вопрос :)PHP + MySQL Цикл Queue
У меня есть Таблицы сайтов 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, и установите' last_scrape' для идентификатора рабочего пользователя до 100, чтобы указать, что он обрабатывается. Удостоверьтесь, что вы также инициализируете поле большим значением, или они могут казаться уже заблокированными для всех работников. – gapple
это достаточно хорошо. Благодарю. – inakiabt