« あじさいをとってきた。 相模原北公園 | メイン | #3 のフライロッドを購入したっす。 »

2011年8月19日

PEAR:MDB2 と driver: sqlsrv >>PHP 

IISでPHP動かして MSSQLに接続して... なんていうのをしていますが..

MDB2_Driver_sqlsrvの 1.5.0b3 では connection が大量に発生してメモリリークします。というか、まともに動かない。

function _doConnectで、setCharsetしています..

        if (!empty($this->dsn['charset'])) {
            $result = $this->setCharset($this->dsn['charset'], $connection);
            if (PEAR::isError($result)) {
                return $result;
            }
        }

が、PEAR:MDB2では(最新 2.5.0b3,および stableでも同様)

    // }}}
    // {{{ setCharset($charset, $connection = null)

    /**
     * Set the charset on the current connection
     *
     * @param string    charset
     * @param resource  connection handle
     *
     * @return true on success, MDB2 Error Object on failure
     */
    function setCharset($charset, $connection = null)
    {
        return $this->raiseError(MDB2_ERROR_UNSUPPORTED, null, null,
            'method not implemented', __FUNCTION__);
    }

.....ふざけんな。

ということで、MDB2_Driver_sqlsrvの該当部分はコメントアウトしましょう。

2007年にThis package been superseded by MDB2 but is still maintained for bugs and security fixes とかいっておいて、MDB2が 2011年でもまだこの完成度ってちょっとどうかと思うよ。

コードの思想にもよるんだろうけれども、'method not implemented'だけじゃなくて、何を実装したいのかもコメントに入れておくべきなんじゃあないのかな。そうすれば、見た人が使いたいとこだけ手を入れることもできるだろうし。

Windows + MSSQL + IIS ...で、PHPっていうのがどうかともちょっと思うんだけど... それはまあ、ちょっとね。。。

twitterこの記事をTwitterでみんなに教える。

投稿者 debizoh : 2011年8月19日 06:55



トラックバック

現在、この記事はトラックバックを受け付けておりません。


コメント

現在、この記事はコメントを受け付けておりません。