Como posso gerir o uso de um recurso compartilhado usado por vários programas em Perl?
Pergunta
Eu estou procurando uma boa maneira de gerenciar o acesso a um servidor FTP externo a partir de vários programas em um único servidor. Atualmente estou trabalhando com um arquivo de bloqueio, de modo que apenas um processo pode usar o servidor ftp de cada vez. O que seria uma boa maneira de permitir 2-3 processos paralelos para acessar o servidor ftp simultaneamente. Infelizmente o provedor não permite mais sessões e bloqueia a minha conta por um dia se muitos processos de acessar seus servidores. plataformas usados ??são Solaris e Linux - todo o acesso ftp é encapsulado em uma única biblioteca, portanto, há apenas 1 função que eu preciso mudar. Seria bom se há algo no CPAN.
Solução
Eu olhar para perlipc (1) para semáforos SystemV ou módulos como POSIX :: RT :: Semaphore para semáforos POSIX. Eu criar um semáforo com uma contagem de recursos de 2-3, e depois nos diferentes tentativa processo para obter o semáforo.
Outras dicas
Em vez de fazer um monte de programas de esperar na fila, você pode criar um programa local que lidou com toda a comunicação remota, enquanto os programas locais falou com ele? Você efetivamente criar um proxy e empurrar essa complexidade longe de seus programas para que você não tem que lidar com isso em cada programa.
Eu não sei as outras restrições sobre o seu problema, mas isso tem funcionado para mim em questões semelhantes.