【问题标题】:ActivePERL on Windows running multiple instances of script simultaneously?Windows 上的 ActivePERL 同时运行多个脚本实例?
【发布时间】:2019-10-20 04:06:32
【问题描述】:

我一直找不到能真正回答我的问题的任何东西,所以如果有人能对此事有所了解,我将不胜感激。

我不是 Unix/Linux 人,所以我在 Windows NT 上运行 ActivePerl。

场景是这样的:

webscript.cgi 调用 background.pl 来做一些肮脏的工作,同时用户使用system($cmd) 继续浏览网站。这一切都很好,但我想知道的是:

如果由于用户运行 background.pl 的操作而在几秒钟内彼此进行了多次调用,会发生什么情况? background.pl 的多个实例会同时运行吗?一个实例必须在下一个实例开始之前完成吗?任何后续调用的实例都会失败吗?或者,我的机器会开始冒烟然后可能会爆炸吗? (笑)

同样,这是在 Windows 环境中运行的,所以我不确定 ActivePerl 的规则是否与在 Unix 环境中运行的规则有点不同。感谢任何可能对此有所了解的人!

【问题讨论】:

    标签: multithreading perl system


    【解决方案1】:

    Web 服务器对运行background.pl 的进程一无所知,因此它会照常进行。它运行webscript.cgi,它启动background.pl

    现在,如果 webscript.cgi 等待 background.pl 完成,您可能会遇到 Web 服务器停止接受请求的情况,因为它的所有工作人员都在运行 webscript.cgi。一旦脚本结束,它将恢复。

    所有这些都很容易测试。


    是否必须先完成一个实例才能开始下一个实例?

    没有。

    任何后续调用的实例都会失败吗?

    没有。

    或者,我的机器会开始冒烟然后爆炸吗? (笑)

    尝试一次运行太多程序确实可能导致配置不佳的服务器崩溃。

    【讨论】:

    • 不,webscript.cgi 继续运行。 background.pl 独立于 CGI 运行。即,webscript.cgi 开始 background.pl 然后继续它的业务。感谢您的回复。
    猜你喜欢
    • 2021-07-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多