Как сохранить данные между выполнениями программы - PullRequest
1 голос
/ 13 сентября 2011

Я запускаю сценарий perl на коробке HP-UX. Сценарий будет выполняться каждые 15 минут и должен будет сравнивать свои результаты с результатами последнего выполнения.

Мне нужно будет хранить две переменные (IsOccuring и ErrorCount) между выполнениями. Каков наилучший способ сделать это?

Редактировать уточнение:
Он сравнивает только самое последнее выполнение с текущим.
Не имеет значения, теряется ли значение между перезагрузками.
И касание файловой системы в значительной степени запрещено.

Ответы [ 7 ]

5 голосов
/ 13 сентября 2011

Если вы не можете коснуться файловой системы, попробуйте использовать сегмент общей памяти.Для этого есть вспомогательные модули, такие как IPC::ShareLite, или вы можете напрямую использовать shmget и соответствующие функции.

4 голосов
/ 13 сентября 2011

Вам придется хранить их в файле. Этот тип файла часто хранится в /tmp, но в любом месте, где у пользователя, выполняющего задание cron, есть доступ. Убедитесь, что ваш скрипт может обработать случай, когда файл отсутствует.

2 голосов
/ 13 сентября 2011

Вы можете создать отдельный процесс, запускающий службу «запомнить вещи» вместо выбранного вами механизма IPC.Это звучит как довольно замученное решение «Я не хочу трогать диск», но если это достаточно важно, чтобы компенсировать пару дней разработки (реально, если вы новичок в IPC, а HP-SUX продолжает житьдо его названия) тогда непременно прочитайте man perlipc для начала.

1 голос
/ 13 сентября 2011

Я определенно думаю, что IPC - это путь сюда.

1 голос
/ 13 сентября 2011

Должен ли он быть полностью перезаписан? Можете ли вы просто запустить его в цикле и спать в течение 15 минут между итерациями? Если вам не нужно беспокоиться о внешнем сохранении значений, программа никогда не останавливается.

0 голосов
/ 13 сентября 2011

Используйте модуль Сохраняемость для сериализации структур данных Perl, сохранения их в любом месте и десериализации при следующем выполнении сценария.

0 голосов
/ 13 сентября 2011

Я бы сохранил данные в файле. Затем внутри скрипта я бы загрузил последние результаты, если файл существует.

...