Как я могу управлять использованием общего ресурса, используемого несколькими программами Perl?
Вопрос
Я ищу хороший способ управления доступом к внешнему FTP-серверу из различных программ на одном сервере. В настоящее время я работаю с файлом блокировки, так что только один процесс может одновременно использовать ftp-сервер. Что было бы хорошим способом разрешить 2-3 параллельным процессам одновременно обращаться к серверу ftp. К сожалению, провайдер не разрешает больше сеансов и блокирует мою учетную запись на день, если слишком много процессов обращаются к их серверу. Используемыми платформами являются Solaris и Linux - весь доступ по ftp инкапсулирован в одну библиотеку, поэтому мне нужно изменить только одну функцию. Было бы хорошо, если есть что-то на CPAN. Р>
Решение
Я бы посмотрел на perlipc (1) для семафоров SystemV или таких модулей, как POSIX :: RT :: Semaphore для семафоров posix. Я бы создал семафор с количеством ресурсов 2-3, а затем попытался бы получить семафор в другом процессе.
Другие советы
Вместо того чтобы заставлять кучу программ ждать в очереди, не могли бы вы создать одну локальную программу, которая обрабатывала бы все удаленное взаимодействие, пока локальные программы говорили с ним? Вы эффективно создаете прокси и отталкиваете эту сложность от своих программ, чтобы вам не приходилось сталкиваться с этим в каждой программе.
Я не знаю других ограничений вашей проблемы, но это помогло мне в подобных вопросах.