Как я могу управлять использованием общего ресурса, используемого несколькими программами Perl?

StackOverflow https://stackoverflow.com/questions/1210885

  •  06-07-2019
  •  | 
  •  

Вопрос

Я ищу хороший способ управления доступом к внешнему FTP-серверу из различных программ на одном сервере. В настоящее время я работаю с файлом блокировки, так что только один процесс может одновременно использовать ftp-сервер. Что было бы хорошим способом разрешить 2-3 параллельным процессам одновременно обращаться к серверу ftp. К сожалению, провайдер не разрешает больше сеансов и блокирует мою учетную запись на день, если слишком много процессов обращаются к их серверу. Используемыми платформами являются Solaris и Linux - весь доступ по ftp инкапсулирован в одну библиотеку, поэтому мне нужно изменить только одну функцию. Было бы хорошо, если есть что-то на CPAN.

Это было полезно?

Решение

Я бы посмотрел на perlipc (1) для семафоров SystemV или таких модулей, как POSIX :: RT :: Semaphore для семафоров posix. Я бы создал семафор с количеством ресурсов 2-3, а затем попытался бы получить семафор в другом процессе.

Другие советы

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

Я не знаю других ограничений вашей проблемы, но это помогло мне в подобных вопросах.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top