2011-09-12 13 views
1

私は実行に約10分かかる1つまたは2つのクエリを持っています。zendのpdo_mssqlにタイムアウトを設定する

タイムアウトを含めるために$ dbオブジェクトを操作するにはどうすればよいですか?

$_SESSION['params'] = array(
'host'   => '127.0.0.1', 
'username'  => 'sa', 
'password'  => 'password', 
'dbname'   => 'schema', 
'driver_options'  => $options 
); 
$db = createConnection($_SESSION['params']); 

function createConnection($params){ 
    return Zend_Db::factory('Pdo_MSsql', $params); 
} 

答えて

1

私はPDO_MSSQLアダプタに慣れていないんだけど、マニュアルに従って、あなたはアダプタに固有のオプションを追加するためにdriver_optionsパラメータを使用することができます。例7の#http://framework.zend.com/manual/en/zend.db.adapter.html#zend.db.adapter.connecting.parametersを参照してください。

タイムアウトを設定するパラメータがPDO_MSSQLの場合は、そこに設定する必要があります。

EDIT:

PDO::ATTR_TIMEOUT属性があるようです。 PHPのドキュメントによれば、

:タイムアウト時間を秒単位で指定します。すべてのドライバーがこのオプションをサポートしているわけではなく、ドライバーによってその意味が異なる場合があります。たとえば、sqliteは書き込み可能なロックを取得することをあきらめる前にこの時間値まで待機しますが、他のドライバはこれを接続タイムアウト間隔または読み取りタイムアウト間隔として解釈します。 intが必要です。

EDIT2:

pdo_mssqlドライバのためのカスタム属性があるようです。 this blog entryによると:

開発者は、接続ごとに、文ごとにPDO :: SQLSRV_ATTR_QUERY_TIMEOUTを使用してクエリのタイムアウトを設定し、そのアプリケーションで優れたユーザー体験を提供するためにそれを利用することができます。

PDO

+0

、役に立てば幸い:: ATTR_TIMEOUT doesntのはpdo_mssql拡張モジュールドライバ – Alex

+0

@Alexに影響を与えているようだ:私は私の答えを再編集した、PDO :: SQLSRV_ATTR_QUERY_TIMEOUT属性があるように思われます。それをテストしていない、私はそれがあなたのために役立つことを願っています。 – dinopmi

関連する問題