Windows上的PHP中的异步popen exec
我有一个奇怪的问题.我最近在我们的测试服务器上设置了一个进程,以便从另一个脚本异步调用脚本.直到最近,它一直在测试期间工作.在继续之前,让我先介绍一些技术细节.来自原始脚本的调用看起来像这样(我更新了调用的逻辑):
exec(‘cmd / S / C“’.$command.’1> nul 2>& 1”’); 使用以下逻辑创建$command: $args = array( 'php','"'.getcwd().'{absolute path to a php script}"',escapeshellarg($job_id),escapeshellarg($vhost),escapeshellarg($debug),); $command = implode(' ',$args); PHP版本为5.3.10,服务器是运行Windows Server 2008 R2 Standard的托管盒. >我已经验证php仍然在系统路径中 令我难以置信的是,上周这次工作正常.我对代码进行了一些更改(看似无关),甚至在恢复我的更改以查看是否存在问题之后 – 此过程仍然存在. 在这一点上,我很神秘,欢迎任何见解,想法或帮助. 解决方法
最终我能够通过不使用popen或exec来解决这个问题,看起来在Windows平台上使用PHP时最好避免这些问题 – 如果你试图创建一个异步脚本调用.相反,我使用PHP中的Windows COM对象支持.
$handle = new COM('WScript.Shell'); $handle->Run($command,false); 这在后台启动进程(隐藏窗口/不打开新窗口)并异步执行 – 即不等待它完成. 包含here是WScript.Shell的文档页面,它提供了所传递参数的效果的官方说明.虽然我没有停下来对它进行基准测试,但我会说,有趣的是,当我尝试使用exec / popen / etc时,他的进程现在运行得比以前更快. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- Windows – 保护来宾VM以使其可以访问Internet,但
- Windows,Emacs,Git Bash和shell命令
- windows-server-2008 – 终端服务器 – 组策略阻
- 在Windows Azure中同一个实例上有多个角色
- windows – ASLR会导致Dlls加载缓慢吗?
- 什么是cygwin / Windows相当于Linux的通知发送
- 如何将我的dll组织到ASP.NET中bin目录下的多个文
- windows-server-2008 – 管理组织中的笔记本电脑
- windows-store-apps – 从通用Windows应用程序打
- AD PowerShell for Add Account & OU &