Wie kann ich von mehreren Perl verwendeten Programmen Verwendung einer gemeinsam genutzten Ressource verwalten?
Frage
Ich bin für eine gute Möglichkeit, den Zugriff auf einen externen FTP-Server aus verschiedenen Programmen auf einem einzigen Server zu verwalten. Zur Zeit arbeite ich mit einer Lock-Datei, so dass nur ein Prozess den FTP-Server zu einer Zeit verwenden kann. Was wäre ein guter Weg, um 2-3 parallele Prozesse zu ermöglichen, gleichzeitig den FTP-Server zugreifen zu können. Leider hat der Anbieter nicht mehr Sitzungen ermöglichen und sperrt mein Konto für einen Tag, wenn zu viele Prozesse ihre Server zugreifen. Gebrauchte Plattformen Solaris und Linux - alle FTP-Zugriff wird in einer einzigen Bibliothek verkapselt somit nur 1 Funktion, die ich ändern müssen. Wäre schön, wenn es etwas auf CPAN ist.
Lösung
ich in perlipc aussehen würde (1) für SystemV Semaphore oder Module wie POSIX :: RT :: Semaphore für Posix-Semaphore. Ich würde eine Semaphore mit einer Ressource Zahl von 2-3 erstellen und dann in dem anderen Prozess versuchen, die Semaphore zu erhalten.
Andere Tipps
Statt eine Reihe von Programmen zu machen in der Schlange warten, könnten Sie ein lokales Programm erstellen, das alle Remote-Kommunikation behandelt, während die lokalen Programme es gesprochen? Sie effektiv einen Proxy erstellen und diese Komplexität drücken aus Ihren Programmen entfernt, so dass Sie damit nicht in jedem Programm zu tun haben.
Ich weiß nicht, die anderen Einschränkungen für Ihr Problem, aber das hat sich für mich auf ähnliche Probleme gearbeitet.