3

私はあなたがここで見ることができる私のPHPスクリプトの魔女に問題を抱えています: http://codepad.org/F0qhElRC

子からの接続ごとに新しいリソースを開いていません。すでに 127.0.0.1 またはローカル ネットワーク IP を使用しようとしましたが、何も機能しませんでした。また、mysql の max_user_connections が 0 に設定されており、Web からの接続を開くと、Web 用の別のリソースが得られます。ただし、コマンドラインでは同じものを使用します。

mysql_connect で new_link を true に指定し、bd クラスに __destruct を配置して、子が破棄された場合に接続を閉じました。接続を閉じても、スクリプトを再起動した後でも、php は新しい接続を開きません。リソースは無料である可能性があるので、それを期待する必要がありますが、チャイルドでもスリープを設定しようとしましたが、新しいリソースを実行しません。

これをデバッグする方法について何か提案はありますか?

基本的に、新しいスクリプトまたは子呼び出しごとに新しい conn が必要です。

前もって感謝します。よろしくお願いします、

4

2 に答える 2

2

関連するすべてのコードを省略できましたが、PHP の多くのデータベース拡張機能は、そうしないように特に指示しない限り、現在開いている接続を再利用します。mysql_connect()を使用している場合は、$new_linkパラメーターを確認してください。

mysql_connect — Open a connection to a MySQL Server
Report a bug
Description
resource mysql_connect ([ string $server = ini_get("mysql.default_host") [, string $username = ini_get("mysql.default_user") [, string $password = ini_get("mysql.default_password") [, bool $new_link = false [, int $client_flags = 0 ]]]]] )

Opens or reuses a connection to a MySQL server.

.

new_link

同じ引数で mysql_connect() への 2 回目の呼び出しが行われた場合、新しいリンクは確立されませんが、代わりに、既に開かれているリンクのリンク識別子が返されます。new_link パラメータはこの動作を変更し、mysql_connect() が以前に同じパラメータで呼び出された場合でも、常に新しいリンクを開くようにします。SQL セーフ モードでは、このパラメーターは無視されます。

于 2011-06-28T14:25:37.543 に答える
0

使用していますsql.safe_modeか (構成ファイルを確認してください)? mysql_connectのドキュメントは、そのような場合に *new_link* が無視されることを示しています。

于 2011-06-28T13:20:39.357 に答える