如何管理多个 Perl 程序使用的共享资源的使用?
我正在寻找一种好方法来管理单个服务器上的各种程序对外部 FTP 服务器的访问。 目前我正在使用一个锁定文件,以便一次只有一个进程可以使用 ftp 服务器。 允许 2-3 个并行进程同时访问 ftp 服务器的好方法是什么? 不幸的是,如果太多进程访问他们的服务器,提供商不允许更多会话并锁定我的帐户一天。 使用的平台是 Solaris 和 Linux - 所有 ftp 访问都封装在一个库中,因此我只需要更改 1 个函数。 如果 CPAN 上有东西就好了。
I am looking for a good way to manage the access to an external FTP server from various programs on a single server.
Currently I am working with a lock file, so that only one process can use the ftp server at a time. What would be a good way to allow 2-3 parallel processes to access the ftp server simultaneously. Unfortunately the provider does not allow more sessions and locks my account for a day if too many processes access their server.
Used platforms are Solaris and Linux - all ftp access is encapsulated in a single library thus there is only 1 function which I need to change. Would be nice if there is something on CPAN.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我会研究 perlipc(1) 用于 SystemV 信号量或用于 posix 信号量的 POSIX::RT::Semaphore 等模块。 我将创建一个资源计数为 2-3 的信号量,然后在不同的进程中尝试获取该信号量。
I'd look into perlipc(1) for SystemV semaphores or modules like POSIX::RT::Semaphore for posix semaphores. I'd create a semaphore with a resource count of 2-3, and then in the different process try to get the semaphore.
您是否可以创建一个本地程序来处理所有远程通信,同时本地程序与之通信,而不是让一堆程序排队等待? 您可以有效地创建一个代理,并将这种复杂性从您的程序中移开,这样您就不必在每个程序中处理它。
我不知道你的问题的其他限制,但这对我在类似的问题上有用。
Instead of making a bunch of programs wait in line, could you create one local program that handled all the remote communication while the local programs talked to it? You effectively create a proxy and push that complexity away from your programs so you don't have to deal with it in every program.
I don't know the other constraints on your problem, but this has worked for me on similar issues.