PHP exec(..)阻止了AJAX响应

时间:2015-11-17 11:57:41

标签: php ajax exec

我写了一个用于视觉输出的本地运行的HTML / Ajax-Page。 该脚本通过间隔通过AJAX调用本地PHP脚本来测试一些代理服务器。

PHP-Script正在通过PHP的cURL函数测试随机Proxy-IP的响应时间,并通过Ajax将响应信息发送回HTML-Page以进行可视化输出。到目前为止工作正常..

现在我在HTML页面上添加了一个小按钮。该按钮再次向我的PHP脚本执行AJAX请求。 PHP脚本正在调用exec(" PATH_TO_CHROME" --params)以使用给定的url启动我的chrome浏览器,并且也应该返回ajax-response。没有什么特别的,只需将信息提供给我的HTML / Ajax页面,命令就成功执行了。我需要一个响应来重新激活AJAX功能,因为我在每次调用后都会阻止AJAX函数,直到我得到响应。

问题:浏览器(Chrome)打开,但我没有得到任何AJAX响应,直到我关闭浏览器(即使我在exec(...)之前回应AJAX响应; flush / ob_flush没有帮助)。似乎执行的浏览器在运行时阻止PHP进程。有没有办法防止这种行为?

1 个答案:

答案 0 :(得分:0)

好的,我自己找到了解决方案。

而不是exec(..)我可以使用Windows内置函数“WScript.Shell”。

$WshShell = new COM("WScript.Shell");
$oExec = $WshShell->Run('PATH_TO_CHROME --params url', 3, false);

这是异步工作的(由于“false” - 参数),PHP在打开浏览器时发送了额外的Ajax-Response。