2009-07-31 3 views
1

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

ответ

4

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

+0

Отличное предложение - я установил его на обеих платформах и успешно проверил его на Solaris ... – weismat

1

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

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

+0

К сожалению, это не сработает - созданные файлы периодически обновляются, и я хочу избежать отправки неполных файлов, знать, когда закончится ftp. (требуется двухсторонняя координация). – weismat