Background Image

FORUM

조회 수 299 추천 수 1 댓글 6
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄 첨부


* 질문 등록 시 다음의 내용을 꼭 기입하여 주세요.

OS
linux centos 7
CUBRID Ver.
CUBRID 10.2 (10.2.2.8874-f681dd9) (64bit release build for Linux) (Sep  1 2020 09:41:17
CUBRID TOOL Ver.
[도움말]-[버전정보] 확인
응용 환경(API)
php 7.4 (pdo 드라이버 컴파일 및 설치 오류) 


* CUBRID 응용 오류, SQL 오류 또는 SQL 튜닝 관련된 문의는 반드시 다음의 내용을 추가해 주세요. 비밀글이나 비밀 댓글도 가능합니다.
* 저희가 상황을 이해하고, 재현이 가능해야 알 수 있는 문제들이 많습니다. 가능한 정보/정황들을 부탁합니다.

 

에러 내용 및 재현 방법 재현 가능한 Source와 SQL
관련 테이블(인덱스, 키정보 포함) 정보 CUBRID 홈 디렉토리 아래 log 디렉토리 압축


-------------- 아래에 질문 사항을 기입해 주세요. ------------------------------------------------------------------------
 

 

 

우여곡절끝에 cubrid_php-10.2 를 컴파일을 했는데요. (11버전을 하고 싶었지만, 컴파일 오류가 나서 포기했습니다. )

- 컴파일한 드라이버 버전은 cubrid-pdo-10.2.0.0001 입니다. 

( https://github.com/CUBRID/cubrid-pdo/releases/tag/v10.2.0.0001 )

 

컴파일 옵션

 

$ ./configure --with-pdo-cubrid=/opt/cubrid/CUBRID-10.2.2.8874-f681dd9-Linux.x86_64 --with-php-config=/opt/re
mi/php74/root/bin/php-config

 

 

- Centos 7 에서 devtoolset-9  버전을 설치한게 큰 도움이 되었습니다. (php 라이브러리 컴파일 매뉴얼에 gcc버전 관련 내용을 추가해주셨으면 합니다.) 

 

 

프로그램이 pdo 로 개발되어 있어서  pdo_cubrid 를 컴파일 하고 있습니다. 


어떻게 해서 컴파일은 했는데 다음과 같은 오류를 내면서 실행이 되지 않습니다. 

 

2021-04-27_012100.png

 

PHP Warning:  PHP Startup: Unable to load dynamic library 'pdo_cubrid' (tried: /opt/remi/php74/root/usr/lib64/php/modules/pdo_cubrid (/opt/remi/php74/root/usr/lib64/php/modules/pdo_cubrid: cannot open shared object file: No such file or directory), /opt/remi/php74/root/usr/lib64/php/modules/pdo_cubrid.so (/opt/remi/php74/root/usr/lib64/php/modules/pdo_cubrid.so: undefined symbol: php_pdo_register_driver)) in Unknown on line 0
 

이에 대한 좋은 해답이 있으면 알려주세요. 

 

(추가)

 

MSSql에서의 다음과 같은 대응에 따라,

 

undefined symbol: php_pdo_register_driver in Unknown on line 0 #151
https://github.com/microsoft/msphpsql/issues/736

 

php.ini 에서의 항목을 삭제하고, php.d/ 에 20-cubrid.ini와 30-pdo_cubrid.ini 파일을 만들어서 대응했는데요. 

이번에는 다음과 같은 오류가 발생했습니다. 

 

2021-04-27_115418.png

 

PHP Warning:  PHP Startup: Unable to load dynamic library 'pdo_cubrid' (tried: /opt/remi/php74/root/usr/lib64/php/modules/pdo_cubrid (/opt/remi/php74/root/usr/lib64/php/modules/pdo_cubrid: cannot open shared object file: No such file or directory), /opt/remi/php74/root/usr/lib64/php/modules/pdo_cubrid.so (/opt/remi/php74/root/usr/lib64/php/modules/pdo_cubrid.so: undefined symbol: add_assoc_unset)) in Unknown on line 0
 

(추가2)

 

아마도 php7은 지원하지 않는 모양이네요.. 매뉴얼대로.. 

소스는 아마도 7을 개발하고 있는것 같은데요. 

 

 

  • ?
    hwanyseo 2021.04.27 16:59
    안녕하세요 큐브리드를 이용해 주셔서 감사합니다.

    일단 버전 지원 부터 말씀 드리면,
    V10.2 PDO Driver에서는 PHP7.4를 지원하지 않습니다. PHP7.1은 지원됩니다.
    V11.0 PDO Driver에서는 PHP7.1, 7.4를 지원합니다.
    Engine을 V10.2를 사용하시는 걸로 보이며, V10.2 Driver 사용을 위해 PHP7.1을 사용 부탁드립니다.

    centos7.8에서 PHP Downgrade 방법, 간략한 setting 방법은 아래와 같습니다.
    - downgrade
    기존 삭제 command) sudo yum remove php-*
    PHP 71 설치 command) sudo yum --enablerepo=remi-php71 install php php-common php-devel php-pdo (기타 필요한 package)

    - cubrid-pdo 재빌드, 재설치 (centos7 기준)
    (참고) cubrid는 현재 devtoolset-8로 개발중입니다.
    php 버전 변경시 재 빌드가 필요합니다.

    1. download (https://ftp.cubrid.org/CUBRID_Drivers/PHP_Driver/PDO/CUBRID10.2.0/Linux/CUBRID-PDO-10.2-latest.tar.gz)
    2. build
    command) cd 압축푼폴더
    command) phpize
    command) touch cci-src/configure.ac (release에 문제가 있어 configure update를 위해 필요합니다.)
    command) ./configure
    command) make
    3. 기본 lib경로를 사용할 경우 build된 pdo_cubrid.so파일을 하기 경로에 추가합니다.
    '/usr/lib64/php/modules'
    (타 경로 사용시 extension_dir 설정이 필요합니다)
    4. 하기 내용과 같은 파일을 생성하여 '/etc/php.d' 경로에 추가합니다.
    [hwanyseo@cenos7new php.d]$ cat 30-pdo_cubrid.ini
    extension=pdo_cubrid.so
    5. 하기 파일(메뉴얼 예제)을 통해 사용가능한 pdo driver를 확인하시면 됩니다.
    command) php version.pdo

    [cat version.pdo]
    <?php
    echo'PDO Drivers available:
    ';
    foreach(PDO::getAvailableDrivers()as $driver)
    {
    if($driver =="cubrid"){
    echo" - Driver: <b>".$driver.'</b>
    ';
    }else{
    echo" - Driver: ".$driver.'
    ';
    }
    }

    사용하시는 centos7 기준으로 작성 확인 된 사항입니다.
    V11.0 Engine 사용 시 위 가이드와 동일하게 V11.0 Driver를 사용하시면 됩니다.
    https://ftp.cubrid.org/CUBRID_Drivers/PHP_Driver/PDO/CUBRID11.0.0/Linux/CUBRID-PDO-11.0-latest.tar.gz
    참고 부탁드립니다.
  • ?
    smilena 2021.04.28 21:13

    말씀하신 방법으로 해서
    Centos 7 에서
    cubrid 11 버전에 대하여
    devtoolset-8 버전을 통하여... 컴파일 하였습니다.
    php7.4 버전의 pdo 드라이버가 컴파일 되고 실행되네요. 감사드립니다. 
    좀 더 환경에 덜타게, 다양한 버전을 지원할 수 있는 드라이버로 수정은 힘든걸까요.

  • ?
    smilena 2021.04.29 13:56

    cubrid php 드라이버에 비해 cubrid pdo php 드라이버가
    일반 쿼리 상황에서 최소 몇배는 느린것 같습니다.
    pdo 드라이버 내부에 최적화를 해야할 여러가지 문제가 있는 것 같습니다.

    예를 들어 연결된 커넥션이나 커넥션 풀을 활용하지 못하고 매번 연결을 시도하는것 같습니다.

     

    (추가) pdo 드라이버는 현재 영속연결을 지원하지 않는답니다. 다른 분들 시행착오 없으시기 바랍니다. 

    Current version of PDO_CUBRID doesn't support persistent connection now.

    https://www.php.net/manual/en/ref.pdo-cubrid.php

     

  • ?
    airnet 2021.04.30 15:39
    안녕하세요 큐브리드를 이용해 주셔서 감사합니다.

    PHP와 PDO 각각 테스트 하신 방법을 알려 주시면 성능 차이에 대해서 확인해 보겠습니다.
  • ?
    smilena 2021.05.08 13:57

     

    큐브리드 사용자가 많이 늘어나기를 바랍니다. 

     

    php 드라이버에서 pdo도 꽤 중요한데, 좀 영속 연결이 안되는건 좀 문제가 있는것 같습니다. 기존 php 드라이버는 영속 연결이 지원되기 때문에, 그것을 이용하면 php pdo 드라이버도 약간만 수정하면 영속 연결이 지원될 수 있을 것이라 봅니다. 전 세계적으로 사용자층이 두터운 Yii 프레임워크 같은 프레임워크가 cubrid를 공식 지원하는데(pdo 드라이버 기반), pdo 드라이버가 제대로 성능을 내지 못하기 때문에 사용자가 늘어나지 않는것 같습니다. 

     

     

    ################################

    ## Cubrid PHP 드라이버 사용 

    ################################ 

    # cubrid_test_php.php

     

    $host = "localhost";
    $port = 33000;
    $db = "testdb";
    $user = "dba";
    $passwd = "";
    $connect_url = "CUBRID:$host:$port:$db:::";
    $skip_on_connect_failure  = getenv("CUBRID_TEST_SKIP_CONNECT_FAILURE") ? getenv("CUBRID_TEST_SKIP_CONNECT_FAILURE") : true;

     

    function connect() {
      global $connect_url, $user, $passwd;  
      $conn = cubrid_connect_with_url($connect_url, $user, $passwd);
      return $conn;
    }

     

    function call($conn = null) {
      if($conn == null)
        $conn = connect();
        
      $rows = cubrid_execute($conn,"select * from wd_user limit 0, 10;");

      try {
        #foreach($row = cubrid_fetch($rows)) {
        while($row = cubrid_fetch($rows)) {
          #print_r($row);
          #printf("%-10s %-20s %-10s\n", $row["full_name"], $row["email"], $row["created_at"]);
          #echo ".";      
          #echo $row['s_name'].' - '. $row['f_name'].'';
        }
      } catch(PDOException $e) {
        echo $e->getMessage();
      }
    }


    #$conn = connect(); # (방법1)
    $conn = 0; # (방법2)

    for($i = 0; $i < 1000; $i++) {
      call($conn);
    }  

     

    방법1과 방법2를 번갈아 가면서 테스트해보았는데 기본 php에서는 별로 성능 차이가 나지 않았습니다. 물론 방법1이 좀 더 빨랐습니다. 

     

     

    ################################

    ## Cubrid PHP PDO 드라이버 사용 

    ################################ 

    # cubrid_test_phppdo.php

     

    $database ="testdb";
    $host ="localhost";
    $port =33000; //use default value
    $username ="dba";
    $password ="";
    $conn_str ="cubrid:dbname=".$database.";host=".$host.";port=".$port;

     

    function connect() {
      global $conn_str, $username, $password;  
      $conn = new PDO($conn_str, $username, $password );
      return $conn;
    }

     

    function call($conn = null) {
      if($conn == null)
        $conn = connect();
        
      $rows = $conn->query("select * from wd_user limit 0, 10;");
      
      try {
        foreach($rows as $row) {
          #printf("%-10s %-20s %-10s\n", $row["full_name"], $row["email"], $row["created_at"]);
          #echo ".";
        }
        
      } catch(PDOException $e) {
        echo $e->getMessage();
      }
    }


    #$conn = connect();  # 방법1 
    $conn = 0;  # 방법2 

    for($i = 0; $i < 1000; $i++) {
      call($conn);
    }  

     

    같은 방법으로 테스트해봤는데, cubrid php 기본 드라이버에 비해 약 4~5배 느렸습니다. (방법2의 경우)

     

     

    # 속도 테스트 방법 

     

    (방법1)

     

    $ time php cubrid_test_php.php

    real    0m1.450s
    user    0m0.213s
    sys     0m0.080s
     

    $ time php cubrid_test_phppdo.php

    real    0m1.315s
    user    0m0.170s
    sys     0m0.166s
     

    (방법2)

     

    $ time php cubrid_test_php.php

    real    0m2.376s
    user    0m0.228s
    sys     0m0.093s
     

    $ time php cubrid_test_phppdo.php

    real    0m9.407s
    user    0m0.542s
    sys     0m1.090s
     

     

     

     

  • ?
    smilena 2021.05.08 20:41 Files첨부 (2)

     

    PHP pdo 드라이버 동작 비교 

     

    같은 application을 database만 mysql(mariadb 10.2)과 cubrid(cubrid 11)로 설정하여 테스트 할 경우. 다음과 같습니다. 프레임워크 yii2 (2.0)

     

     

    @@ Mysql 의 경우 (yii 디버그 프로파일 창)

     

    mysql.jpg

     


     

     

    @ Cubrid 의 경우 (yii 디버그 프로파일 창)

     

     

    cubrid.jpg

     

     

    cubrid의 query의 처리 속도가 엄청나게 느리다기 보다는 

    query와 query 간 delay가 굉장히 길게 발생하는데, 

    이게 yii 프레임워크 문제인지

    cubrid 접속에 따른 지연문제 등 다른 문제인지 잘모르겠습니다. 

     

     

     


     


  1. SQLGate for CUBRID 영구 무료 라이선스 제공

    Date2020.04.09 Byadmin Views4444
    read more
  2. 데이터베이스 삭제시 incorrect or missing password

    Date2023.08.26 Bydfahwh Views113
    Read More
  3. 재귀절을 이용한 뷰 생성

    Date2023.08.24 Bysj.han Views104
    Read More
  4. 데이터타입 조회 문의

    Date2023.08.23 By박혀누 Views84
    Read More
  5. cannot communicate with the broker or received invalid packet

    Date2023.08.23 Byfree Views129
    Read More
  6. Docker

    Date2023.08.23 Bysj.han Views250
    Read More
  7. 비밀번호 변경 오류

    Date2023.08.18 Bydfahwh Views107
    Read More
  8. 큐브리드 DB 복원 관련 문의

    Date2023.08.14 Byfewkgpokp Views76
    Read More
  9. 큐브리드 매니저 테이블 목록 표시 관련해서 질문이 있습니다

    Date2023.08.09 By리에레이 Views89
    Read More
  10. cubrid에 세션확인 방법

    Date2023.08.04 Byredrum Views139
    Read More
  11. 테이블 코멘트 컬럼 코멘트 질문

    Date2023.08.03 By대청댐 Views74
    Read More
  12. 다중 IN(튜플 IN)이 1건인 경우 오류 발생됩니다 큐브리드 자체문제이지 않나 싶어 문의드립니다

    Date2023.08.01 By일개미81호 Views89
    Read More
  13. GRANT SELECT 후 SELECT 쿼리 실행 오류 문의

    Date2023.07.25 By바보똥개 Views98
    Read More
  14. auto commit 이 되어있어서 잘못 update 처리한 데이터가 commit 되었을 때 대처법 부탁드립니다

    Date2023.07.21 Byrollback Views86
    Read More
  15. 운영db 접근이 되지 않아 문의 드립니다

    Date2023.07.20 By찬이 Views99
    Read More
  16. 홈경로 databases.txt 질문드립니다

    Date2023.07.17 By큐브리드드 Views92
    Read More
  17. Cubrid admin 접속 제한 문의드립니다.

    Date2023.07.13 By데굴v Views118
    Read More
  18. 특정단어 삭제

    Date2023.07.13 Byddmmdd Views165
    Read More
  19. error while loading shared libraries: libncurses.so.5 에러 문의 드립니다.

    Date2023.07.10 Bykikiki767 Views1438
    Read More
  20. 다운로드페이지에 CUBRIDManager 11.x windows-x64.exe 는 없는데 .. 다운로드 할 수 있을까요?

    Date2023.07.05 By최라이거 Views273
    Read More
  21. db_class에서 테이블 목록 조회시

    Date2023.07.03 Bycncn Views285
    Read More
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 200 Next
/ 200

Contact Cubrid

대표전화 070-4077-2110 / 기술문의 070-4077-2113 / 영업문의 070-4077-2112 / Email. contact_at_cubrid.com
Contact Sales