【问题标题】:How can I manage use of a shared resource used by several Perl programs?如何管理多个 Perl 程序使用的共享资源的使用?
【发布时间】:2009-07-31 06:07:41
【问题描述】:

我正在寻找一种管理从单个服务器上的各种程序访问外部 FTP 服务器的好方法。 目前我正在使用一个锁定文件,因此一次只有一个进程可以使用 ftp 服务器。什么是允许 2-3 个并行进程同时访问 ftp 服务器的好方法。不幸的是,如果太多进程访问他们的服务器,提供商不允许更多会话并锁定我的帐户一天。 使用的平台是 Solaris 和 Linux - 所有 ftp 访问都封装在一个库中,因此我只需要更改一个函数。如果CPAN上有东西会很好。

【问题讨论】:

    标签: linux perl solaris


    【解决方案1】:

    我会研究 perlipc(1) 用于 SystemV 信号量或诸如 POSIX::RT::Semaphore 之类的模块用于 posix 信号量。我会创建一个资源计数为 2-3 的信号量,然后在不同的进程中尝试获取该信号量。

    【讨论】:

    • 很好的建议 - 我已经在两个平台上都安装了它,并在 Solaris 上成功测试了它......
    【解决方案2】:

    您能否创建一个本地程序来处理所有远程通信,同时本地程序与之通信,而不是让一堆程序排队等待?您可以有效地创建代理并将复杂性从您的程序中推开,这样您就不必在每个程序中都处理它。

    我不知道你的问题的其他限制,但这对我在类似的问题上有用。

    【讨论】:

    • 不幸的是,这不起作用 - 创建的文件会定期更新,我想避免发送不完整的文件,因此调用者需要知道 ftp 何时完成。 (需要双方协调)。
    猜你喜欢
    • 2011-06-24
    • 2011-06-06
    • 2021-02-10
    • 2017-01-27
    • 2023-02-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多