2010-01-28 3 views
1

내 응용 프로그램은 ADODB를 사용하여 2 개의 MySQL DB에 동시에 연결합니다. 응용 프로그램이 큰 파일을 다운로드하고 있습니다. 그것은 "mysql이 사라져 버렸습니다"라는 오류가 발생하기 때문에 많은 시간이 걸립니다.PHP ADODB는 MySQL에 연결하기 전에 mysql_options()를 호출합니다.

MySQL은 mysql_options()를 사용하여 활성화 할 수있는 자동 재 연결을 허용하지만이 기능을 ADODB 어댑터에 적용하는 방법을 알지 못합니다.

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

시간 내 주셔서 감사합니다.

추신 : 아마 $ DB에서 DB 처리기 변수를 가져 오는 방법을 물어야합니까? $ ADDRO에서 DB 연결 핸들러를 $ 핸들러로 사용할 수 있다면 mysql_options ($ handler, MYSQL_OPT_RECONNECT, 1); 하지만 연결 전에 mysql_options()를 호출해야한다면 $ handler를 얻을 수 있을까? (MySQL 레퍼런스 http://dev.mysql.com/doc/refman/5.0/en/mysql-options.html에 따라)

+0

PHP MySQL API에서 mysql_options() 함수가 사용 불가능한 것 같습니다 : ( – Kirzilla

답변

0

mysql 옵션을 설정하려면 dsn을 사용할 수있다. 당신은 MySQL을 위해 이것을 사용할 경우

$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; 
    } 
} 

당신은 sqlite 드라이버 조건 블록을 생략 할 수 있습니다 : 이것은 내가 항상 사용 내 연결 템플릿입니다. PHP MySQL 클라이언트는 제한된 옵션 인 here is the list 만 지원합니다. MySQLi, have more options을 사용해보십시오.

영구 연결을 시도해 보셨습니까?

+0

) MySQLi lib는 정확히 내가 찾고있는 것입니다 .ADODB가 MySQLi를 지원합니까? – Kirzilla

+0

감사합니다 .ADODB에서 MySQLi 드라이버를 찾았습니다. drivers. 지금 시도해보기. – Kirzilla

+0

ADODb의 드라이버를 확인하려면'drivers' 폴더를 살펴보십시오. 드라이버 파일 이름은'adodb- [DRIVER_NAME] .inc.php' 형식을 따릅니다. –