PHP / Cronjob сохранил масштабируемость поиска - PullRequest
1 голос
/ 29 мая 2009

Наш веб-сайт по недвижимости отправляет уведомления по электронной почте, когда на рынке появляется недвижимость, соответствующая сохраненным пользователям критериям поиска.

У меня есть скрипт PHP, который запускается в cronjob для обработки поиска.

В системе более 40 000 пользователей. Я столкнулся с проблемой, когда исчерпал объем памяти PHP. По мере роста системы я могу продолжать увеличивать объем памяти в php.ini, но хотел бы найти более надежный способ сделать это.

Есть ли более масштабируемый способ сделать это? Должен ли я построить что-то на более надежном языке? Возможно, многопоточное приложение на Java или Python?

1 Ответ

1 голос
/ 29 мая 2009

Используйте некоторый идентификатор в сохраненных таблицах поиска, чтобы разбить задачи на количество компьютеров, выделенных для этого.

разделяй и властвуй , обрабатывая разделы поиска с рефакторингом для множества машин, каждый из которых выполняет определенный раздел задач.

Каждый скрипт может сделать

SELECT * FROM saved_search_tbl WHERE ssid IN CALCRANGE(searchid, node_id)

Где INRANGE - некоторая логика разделения, основанная на объеме работы и номере узла машины. Когда приходят новые поиски, вы связываете баланс нагрузки их между машинами, назначая первичные и вторичные вычислительные узлы.

Несколько идей, надеюсь, они помогут!

удачи

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...