Извлечение ранее невидимых записей из базы данных - PullRequest
0 голосов
/ 31 января 2011

У меня есть веб-приложение (созданное с codeigniter), которое запускается каждые n раз.Он выполнит хранимую процедуру, которая получит список последних заказов.Часть задачи состоит в том, чтобы использовать хранимую процедуру, но я уверен, что для решения требуется другой метод, который не должен вызывать проблем.

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

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

Некоторое время назад я написал Perl-скрипт, который делал нечто похожее с файлом журнала, используя модуль Tail.Он будет искать и регистрировать новую строку, которую он не обработал, затем обрабатывать ее, но опять же, этот scipt постоянно работает.Я знаю, что это совсем по-другому, но есть ли что-то похожее, что я могу сделать в PHP с помощью БД?

Я бы предпочел не хранить что-либо в БД, а только запрашивать через хранимую процедуру.1010 * Спасибо,

Билли

Ответы [ 2 ]

3 голосов
/ 31 января 2011

ИМХО лучший способ извлечь записи, которые не были обработаны ранее, это извлечь записи с определенным статусом.

Вы упомянули:

Я бы предпочел не хранить что-либо в БД, а делать запросы только через хранимую процедуру.Я предлагаю добавить поле статуса в вашу таблицу заказов и изменить статус заказа после отправки заказа.

Я бы не стал доверять идентификаторам заказа на выборку> ранее отправленному идентификатору заказа.Что произойдет, если вам нужно обновить старый уже отправленный заказ и вам нужно отправить его снова?

1 голос
/ 31 января 2011

Хммм, звучит неуклюже для меня. Я бы сохранил эту информацию в базе данных.

Либо добавьте флаг в таблицу «Заказы», ​​который указывает, был ли он обработан. В качестве альтернативы можно сохранить таблицу с MailID, OrderId, которая отслеживает, по какой электронной почте был отправлен заказ. Чтобы отправить новые сообщения, просто оставьте присоединиться и скажите, где MailId равен нулю. Это даст вам те, которые еще не были отправлены.

Я не вижу причин, чтобы держать это отдельно от БД, и много причин (особенно Keeping It Simple ...), чтобы сохранить его.

Ргдс ГДж

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