我正在调用控制台应用程序,TPDF.exe
它是用 C# 制作的,带有以下 PHP 代码。
<?php
$myFile=".."; // This variable holds the xml contents
$folder=dirname(__FILE__);
$exe=dirname(dirname(__FILE__))."\\pdfexe\\TPDF.exe";
$args="\"\"$folder\\$outputfilename\"\" \"\"$folder\\$myFile\"\"";
$WshShell = new COM("WScript.Shell");
$oShellLink = $WshShell->CreateShortcut("$folder\\temp.lnk");
$oShellLink->TargetPath = $exe;
$oShellLink->Arguments = $args;
$oShellLink->WorkingDirectory = dirname($exe);
$oShellLink->WindowStyle = 1;
$oShellLink->Save();
$oExec = $WshShell->Run("$folder\\temp.lnk", 0, false);
//$WshShell->Quit();
$WshShell=null;
$oShellLink=null;
$oExec=null;
unset($WshShell,$oShellLink,$oExec);
unlink("$folder\\temp.lnk");
?>
一切正常。但我面临的问题是,如果应用程序TPDF.exe
抛出异常(我已经捕获并记录),它会使 Apache 服务器无响应,实际上它会挂起 APACHE。我必须停止并重新启动 APACHE 才能使其再次工作。
那么避免这个问题的可行解决方案是什么?可能我必须对上面的 PHP 代码或 c# 应用程序源代码进行一些调整?
PS我没有在这里发布C#代码,因为它工作正常,唯一的问题是当应用程序抛出异常时apache被挂起。
编辑:
实际上,它不是挂起的 Apache 服务器,而是挂起的 PHP 脚本。当我在浏览器中打开新标签并浏览同一站点时,它会正确打开。但是,一旦请求运行外部控制台应用程序并且该应用程序抛出异常,页面就会再次挂起。
任何帮助都将是非常可观的。