在PHP中,我使用COM-object创建一个XLS文件。
$excel = new COM("Excel.Application") or die("Excel is not installed!");
$excel->WorkBooks->Add();
...
$excel->WorkBooks[1]->SaveAs($path);
$excel->Quit();
$excel->Release();
$excel = null;
运行此代码后,Excel.exe进程仍在内存中约6分钟。如何强制这个过程立即退出?
答案 0 :(得分:3)
您正在使用COM对象,因此您必须在Windows上讨论php。基本上,您可以使用命令行工具taskkill来终止任务。你可以使用php命令shell_exec调用它,比如
shell_exec('taskkill /F /IM "excel.exe"');
如果您没有权利(但我认为您应该开始此过程),请使用runas运行cmd行。
BUT!您正在使用php,因此如果您在Web环境中运行此操作并且人们同时访问您的网站,则可能有多个Excel实例正在运行。如果是这种情况,你必须弄清楚你要杀死哪一个。
答案 1 :(得分:0)
如果请求另一个“Excel.Application”对象,该过程会持续一段时间,在这种情况下,我们可以避免启动新进程和加载所有DLL的成本。
我只是将其视为一项功能。
答案 2 :(得分:0)
还有另一种方式...... 尝试取消初始化COMS。而不是只做一次,做4次。这是通过反复试验确定的,所以我没有正当理由,除非它有效。但是,这并不是一直有效。它可能只适用于您的情况