2012-07-14 80 views
0

作为一个很长时间的潜伏者,在这里新注册的用户!使用PHP的Apache文件执行模式exec()

我在本地安装了Apache 2.2 Web服务器(现在)作为一项服务,安装了PHP 5。我使用PHP的exec()来运行托管在服务器上的命令行客户端(.exe),该命令行客户端将用户身份验证到数据库并代表用户进行预定义的SQL查询。

我的问题是:Apache如何通过(相同的)PHP exec()命令运行多个用户请求的程序?在这种情况下,Apache是​​否会为将要访问它的所有用户使用同一个客户端实例,或者Apache将为每个用户创建客户端的新实例?

由于客户端设计为供单个用户使用,如果Apache确实重用了同一个客户端实例,它将会遇到很多并发问题。

我感谢任何帮助,我可以得到,谢谢!

回答

2

PHP每次PHP调用exec()时都会启动该进程,并且只要需要完成,它就会一直运行。因此,如果多个用户同时访问触发它的脚本,您将最终得到多个进程同时运行的副本。

除非您使用了一些非常奇怪的数据库,否则可能有更好的方法来查询它,而不是启动命令行工具。例如,如果您的数据库有可用的ODBC驱动程序,则可以直接通过PHP ODBC扩展使用它。

+0

我实际上没有对数据库的透明访问,我可以连接到数据库的唯一方法就是通过此客户端,但感谢ODBC上的提示!我会记住这一点以备将来参考。 – Derek 2012-07-14 06:13:40