1

我正在使用 PHP 的 shell_exec 函数在我的服务器上调用 bash 脚本。

shell_exec("bash -x /tesladata/isetools/0-extractbytickerforweb.bash $ticker $isedate > /t24alv2/iseoutput/$ticker-$isedate-$thistime.log &");

现在,我以前从 CGI 脚本(“bash -x ...”)运行命令,它更快(即时)。现在,脚本运行(> 10 秒)和生成的页面渲染需要非常缓慢的时间。

有什么想法为什么这么慢?我仍然想从 PHP 而不是 CGI 运行 bash 脚本,因为我的整个站点都被转换为 PHP。也许另一个功能更合适?任何想法,将不胜感激。

4

2 回答 2

4

你可以看看 PHP 的execsystem函数,但是我真的看不出它们会加速脚本执行的原因,不过值得一试。我很确定这是 apache 的问题(假设您使用的是 apache),而不是 PHP,这个结论的来源是这个 bug thread

此外,在公共网站上使用这些命令时,您真的应该非常小心。利用escapeshellargescapeshellcmd

于 2009-11-18T16:37:54.583 回答
4

对于将 Apache 作为 NT 服务运行的 Windows 用户:通过将 Apache 服务配置为使用用户帐户不是默认系统帐户运行,您似乎可以大大提高 shell_exec() 或 exec() 的性能。

例如,我发现将 Apache 作为标准 NT 服务运行会导致 shell_exec() 命令花费 15-17 秒(特别是运行 svn 命令)。将 Apache 服务更改为使用用户帐户运行会导致时间下降到 4-5 秒——这是一个巨大的差异

为此,请打开服务控制面板,右键单击 Apache 服务,然后选择属性。单击登录选项卡并将“本地系统帐户”单选按钮更改为“此帐户”。然后指定您希望服务使用的用户帐户。

请注意,我不是 Windows 管理员。使用用户帐户运行服务可能会产生我不知道的重要影响。

于 2009-12-03T03:58:29.923 回答