PHP MySQL и очереди, блокировка таблиц, проблема чтения / записи - PullRequest
0 голосов
/ 26 сентября 2010

У меня есть следующий сценарий:

PHP(Server, Writer) ----> MySQL Database <------ PHP(Client, Reader/ Writer);
  • PHPS = PHP-сервер
  • PHPC = PHP-клиент

Какэто работает?

  1. PHPS записывает данные во временные таблицы базы данных (queue_ *).
  2. PHPC запускается cron на 1 час.
  3. PHPC запускается, подключается к базе данных и локально кэширует все записи (как? Не знаю, локальный mysql db? Sqlite?)
  4. PHPC выполняет задачи, определенные в этих записях одну за другой
    • , если задача выполнена успешно, она удаляет ее из баз данных
    • , если она не удалась, она добавляет эту запись в базу данных под таблицей отчетов.

Как мне реализовать это так, чтобы

  • Половина письменных записей из PHPS не доходила до PHPC.
  • PHPC может кэшировать все записи локально после одного запроса для их обработки.

Любые другие идеи, которыми вы можете поделиться и поделиться, высоко ценятся.

Ответы [ 2 ]

1 голос
/ 26 сентября 2010

Вы можете узнать о блокировке MySQL здесь: Блокировка в MySQL . Запомните таблицу разблокировки после окончания записи данных.

1 голос
/ 26 сентября 2010

Блокировка MySQL по умолчанию гарантирует, что никакие «наполовину написанные» строки не будут выбраны. Что касается «локального кэширования», кажется, что все, что означает в вашем сценарии, - это чтение их из базы данных в локальную структуру данных PHP, например, в массив.

...