|
Perl: Хранение данных между запусками скрипта
|
|||
---|---|---|---|
#18+
Мне нужно сохранять небольшой объем данных (2-3 значения) между вызовами скрипта. Сейчас этим занимается модуль, который в конструкторе считывает данные из файла, а в деструкторе сохраняет их в файл. А можно ли обойтись без файла? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2018, 00:37 |
|
Perl: Хранение данных между запусками скрипта
|
|||
---|---|---|---|
#18+
База данных для долговременного хранения, мемкеш для оперативного - на выбор. А чем файл то не устраивает? Оно, всяко, проще и дополнительных телодвижений не требует. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2018, 00:47 |
|
Perl: Хранение данных между запусками скрипта
|
|||
---|---|---|---|
#18+
Файл вполне устраивает, но без файла (в памяти) было бы удобнее. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2018, 01:31 |
|
Perl: Хранение данных между запусками скрипта
|
|||
---|---|---|---|
#18+
Дык процесс при завершении обязан память освободить. Или он не должен завершаться вовсе - тогда область памяти имеет право быть закрепленной за процессом. Можно сделать какой-то демон, который будет принимать команды и выполнять необходимую работу. Ветка работы закончилась - переход на ветку ожидания команд. А данные можно оставить жить в памяти (не убивать нужные переменные). ... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2018, 02:00 |
|
Perl: Хранение данных между запусками скрипта
|
|||
---|---|---|---|
#18+
На *NIX из перла доступна SysV shared memory Код: php 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
Просмотр выделенных сегментов: ipcs -m Удаление сегмента: ipcrm -M 0x1234 Упаковку/распаковку значений в бинарную строку надо делать врукопашную. ИМХО, простой файл переносимее и удобней. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2018, 04:40 |
|
Perl: Хранение данных между запусками скрипта
|
|||
---|---|---|---|
#18+
vkleДык процесс при завершении обязан память освободить. Само собой. Я имел ввиду не память процесса, а какую-то общую системную память. scripНа *NIX из перла доступна SysV shared memory Оно, спасибо. scripУпаковку/распаковку значений в бинарную строку надо делать врукопашную. Это не проблема. А вот SysV смущает — его сейчас везде выпиливают и переходят на systemd. Наверное действительно лучше файлы использовать. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2018, 08:46 |
|
Perl: Хранение данных между запусками скрипта
|
|||
---|---|---|---|
#18+
Выпиливают SysV init Стандарты IPC (сообщения, семафоры, разделяемая память) определённые в SysV останутся ещё надолго. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2018, 10:37 |
|
Perl: Хранение данных между запусками скрипта
|
|||
---|---|---|---|
#18+
Сделал такой модуль: Код: php 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120.
Получилось немного не так, как я хотел, но вроде бы все работает. Но проблема с режимом отладки — на стадии CHECK (в которой вызывается процедура _get) переменные не инициализированы и поэтому отладочный вывод отсутствует. Не посоветуете, как такие ситуации правильно разрешаются? Может быть можно как-то передать список при подключении модуля — use Store qw(debug) ? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2018, 13:12 |
|
Perl: Хранение данных между запусками скрипта
|
|||
---|---|---|---|
#18+
Еще одна странность. Когда скрипт запускаю интерактивно, то все работает нормально. Когда скрипт запускается из планировщика, то на строчке print JSON $json->encode($data) возникает ошибка "print() on closed filehandle". С чем это может быть связано? Обычно такое бывает при недостатке прав доступа (когда open выполнился неуспешно), однако в данном случае я проверял, на файл выставлены права 666. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2018, 16:18 |
|
Perl: Хранение данных между запусками скрипта
|
|||
---|---|---|---|
#18+
Alibek B., так в самом скрипте и сохраняй в секции __DATA__ . хе-хе. глупость, конечно, но реально. https://stackoverflow.com/questions/10352298/writing-a-persistent-perl-script/10353338#10353338 ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2018, 13:06 |
|
Perl: Хранение данных между запусками скрипта
|
|||
---|---|---|---|
#18+
Я подумывал об этом, но все же не стал делать, может быть много нюансов (начиная от прав доступа и заканчивая исключением в процессе сохранения и очисткой файла). А почему __DATA__, а не __EOF__? В __DATA__ у меня есть данные (в основном конфигурационные), а если уж работать с файлом скрипта напрямую, то проще в конец файла дописывать. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2018, 13:31 |
|
|
start [/forum/topic.php?fid=23&gotonew=1&tid=1460331]: |
0ms |
get settings: |
8ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
36ms |
get topic data: |
7ms |
get first new msg: |
6ms |
get forum data: |
3ms |
get page messages: |
50ms |
get tp. blocked users: |
1ms |
others: | 11ms |
total: | 139ms |
0 / 0 |