0

久しぶりにここに新規登録したユーザー!

PHP5がインストールされたサービスとしてローカルで(今のところ)Windows上で実行されているApache2.2Webサーバーがあります。PHPのexec()を使用して、サーバーでホストされているコマンドラインクライアント(.exe)を実行しています。このクライアントは、データベースに対してユーザーを認証し、ユーザーに代わって事前定義されたSQLクエリを実行します。

私の質問は、Apacheは(同じ)PHP exec()コマンドを介して複数のユーザーから要求されたプログラムをどのように実行するのですか?この場合、Apacheは、それにアクセスするすべてのユーザーに対して同じ1つのクライアントのインスタンスを使用しますか、それともApacheは各ユーザーに対してクライアントの新しいインスタンスを作成しますか?

クライアントは単一のユーザーが使用するように設計されているため、Apacheがクライアントの同じインスタンスを再利用すると、多くの同時実行の問題が発生します。

私が得ることができるどんな助けにも感謝します、ありがとう!

4

1 に答える 1

2

PHPは、PHPが呼び出すたびにプロセスを起動し、exec()終了するまで実行を続けます。そのため、複数のユーザーがWebサイトのスクリプトに同時にアクセスして、プロセスをトリガーすると、プロセスの複数のコピーが同時に実行されることになります。

本当に奇妙な種類のデータベースを使用しているのでない限り、コマンドラインツールを起動するよりもクエリを実行する方がおそらく良い方法です。たとえば、データベースで使用可能なODBCドライバーがある場合は、PHPODBC拡張機能を介して直接使用できる場合があります

于 2012-07-14T04:11:21.260 に答える