MySQL bağlanmadan önce php ADODB çağrı mysql_options ()

1 Cevap php

Benim uygulama 2 MySQL DB aynı anda bağlanmak için ADODB kullanıyor. Uygulama büyük dosyaları indirirken; hata gerçekleşir "mysql uzağa gitti" bu yüzden çok zaman alır.

MySQL mysql_options () kullanılarak etkin olabilir otomatik yeniden kullanmanıza olanak sağlar biliyorum, ama ben ADODB adaptörü için bu işlevi uygulamak için nasıl hiçbir ipucu var.

    $DB = NewADOConnection('mysql');
    $DB->Connect(DB_HOST, DB_LOGIN, DB_PASSWORD, DB_DBNAME);

Size zaman için teşekkür ederiz!

PS: Muhtemelen $ DB DB işleyicisi değişkeni nasıl sormalısınız? Ben ADODO DB bağlantı işleyicisi alabilirsem $ işleyicisi olarak ben mysql_options kullanabilirsiniz ($ eylemci, MYSQL_OPT_RECONNECT, 1); Ama bağlantısının önce mysql_options () aramak gerekir eğer nasıl $ işleyici alabilir (MySQL referansa göre http://dev.mysql.com/doc/refman/5.0/en/mysql-options.html)

1 Cevap

Mysql seçeneklerini ayarlamak için, DSN kullanabilirsiniz. Bu her zaman kullanmak benim bağlantı şablonu:

$options = '';
if ($driver == 'mysql' OR $driver == 'mysqli')
{
  if ($params['pconnect'] === TRUE)
  {
    $options .= '?persist';
  }
  $flags = MYSQL_CLIENT_COMPRESS;
  $options .= (empty($options)?'?':'&')."clientflags=$flags";
}

$dsn = "{$driver}://{$username}:{$password}@{$hostname}/{$database}{$options}";

if ($driver == 'sqlite')
{
  if ($params['pconnect'] === TRUE)
  {
    $options = '?persist';
  }
  $database = urlencode($database);
  $dsn = "{$driver}://{$database}{$options}";
}

$adodb =& ADONewConnection($dsn);

if ($adodb)
{
  //set fetch mode
  $adodb->SetFetchMode(ADODB_FETCH_BOTH);

  //character set
  if ($driver == 'mysql' OR $driver == 'mysqli')
  {
    if (isset($params['char_set']) AND $params['char_set']
        AND isset($params['dbcollat']) AND $params['dbcollat'])
    {
      $charset    = $adodb->qstr($params['char_set']);
      $collation  = $adodb->qstr($params['dbcollat']);
      $adodb->Execute("SET NAMES $charset COLLATE $collation");
    }
  }
  if ($debug)
  {
    @ob_start();
    $adodb->debug = TRUE;
  }
}

You can omit the sqlite driver conditional block if you will only use this for MySQL. Apparentlt, PHP MySQL client only support limited option, here is the list. You can try MySQLi, it have more options.

Eğer kalıcı bağlantı Istead denemek mi?