0

我有一个运行 IIS 和 SQL Server 2012 的 Windows 2012 服务器。

我正在尝试从命令提示符运行 PHP 脚本。该脚本需要大约 1 小时才能运行。如果我像这样直接从命令行运行它 - c:\PHP>php.exe "D:\Web\phpScript.php" 它运行良好。再次运行大约需要 1 小时,但可以正常运行。

问题是我需要从另一个 PHP 页面运行它。所以这段代码 - exec('start c:\php\php.exe "D:\Web\phpScript.php"'); 在 PHP 中运行脚本。当我像这样从 PHP 运行它时,它可以运行大约 30 分钟左右,但由于某种原因,Windows 最终会在大约 30 分钟后终止该进程。

我一直在看 Windows 上的任务管理器,与我直接从命令提示符运行它或使用 PHP 运行命令时相比,该进程的运行方式没有任何区别。它们都显示为后台进程,并且在任务管理器中看起来完全相同,但由于某种原因,Windows 正在杀死从 PHP 运行的进程,而不是直接从命令提示符运行的进程。

我什至尝试过实时运行 PHP ,我想如果它具有更高的优先级,它就不会被杀死,但这并没有帮助。

我真的坚持这一点。

任何帮助都会很棒。

谢谢!

4

1 回答 1

0

如果它与您的 PHP 配置有关,您可以在脚本开头强制允许一定的执行时间

set_time_limit(60*60*2); // allows 2 hours execution time

然后执行外部文件只需include('D:\Web\phpScript.php');在脚本中使用。

http://php.net/manual/en/function.set-time-limit.php

否则,如果它是一个服务器问题,打败我。如果机器上安装了 PHP,您当然可以...在您的 Web 浏览器而不是命令提示符下运行它。

于 2013-04-07T18:55:05.727 回答