2012-07-14 78 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