2017-01-09 4 views
-2

우리는 32 클라이언트 데이터베이스, 일부는 (. V.11 현재, 호스팅 및 Mac의 구축) 레코드의 수백만, 크고 있습니다. Windows 2012 64x Server에 웹 사이트를 구축하고 PDO의 마지막 버전을 PHP 버전과 함께 포함 시켰습니다 (PHP 5.2.8의 Xamp 2.5). 플러그인과 Apache는 32x입니다.새로운 PDO의 PDO_4D 컴파일

내 웹 페이지는 4D SQL 서버의 모든 32 클라이언트에 연결하고 몇 가지 SQL을 선택 채석장을 실행합니다. 내가 만나는 문제는 설명하기가 거의 불가능합니다. 몇몇 수색 기간에 때때로 때때로 작동하고 때때로이지 않는다. 내 말은, "jone doe"를 검색하면 결과가 나옵니다. 후자를 변경하면 클라이언트의 SQL 연결 핸들러가 매달리고 웹 페이지가 시간 초과됩니다.

패턴이 없음을 유의하십시오. 일부 검색은 하나의 클라이언트에 매달려 있습니다. 일부는 2 또는 3입니다. 다른 검색은 동일하지만 다른 클라이언트입니다. 특정 수의 13 자에 대한 하나의 검색 만 모든 클라이언트를 통과하며 완벽하게 작동합니다. 또한 특정 테이블과 열을 대상으로하고 있으므로 SQL 쿼리가 문제가 아니므로 검색 상자가 거의없고 모든 단일 검색 또는 OR SQL이며 약 4- 6 개의 열을 사용하여 하나의 선택 쿼리에 대한 결과를 표시합니다.

또한 사설 네트워크에서 작동합니다. 그래서 연결도 문제가 아닙니다. 나는 그 결과가 하나의 연결 당 최대 0 - 50이 될 수 있다고 덧붙일 것이다. 때문에 너무 많은 데이터를 선택 일부 쿼리에 난 정말이 PDO 제한 문제입니다 희망

function trazi($dbaza) { 
    global $db; global $db2; global $db3; global $db4; global $db5; global $db6; global $db7; 
global $db8; global $db9; global $db10; global $db11; global $db12; global $db13; global 
$db14; global $db15; global $db16; global $db17; global $db18; global $db19; global $db20; 
global $db21; global $db22; global $db23; global $db24; global $db25; global $db26; global $db27; 
global $db28; global $db29; global $db30; global $db31; global $db32; 
    global $inime; global $inoib; global $inbb; global $inbbroj; global $insb; 

    $odabrani = $dbaza->prepare('SELECT STANJE, SUD_BROJ_O, SUD_BROJ_P, SUD_BROJ_JBR , NAZIV_LONG, OIB FROM PREDMETI WHERE SUD_BROJ_O = ? '); 
    $params = array($insb); 
    $odabrani->execute($params); 
    $rezultat = $odabrani->fetchAll(PDO::FETCH_ASSOC); 
unset($dbaza); 
unset($odabrani); 

if ($rezultat) { 


      <th>Ime i prezime</th> 
      <th>OIB</th> 
      <th>Bilježnički broj</th> 
      <th>Sudski parnički broj</th> 
      <th>Sudski ovršni broj</th> 
      <th>Stanje predmeta</th>'; 

    foreach($rezultat as $row) { 
      echo "<tr> 
      <td>".$row['NAZIV_LONG']. "</td>". 
      "<td>".$row['OIB']."</td>". 
      "<td>".$row['SUD_BROJ_JBR']."</td>". 
      "<td>".$row['SUD_BROJ_P']."</td>". 
      "<td>".$row['SUD_BROJ_O']."</td>". 
      "<td>".$row['STANJE']."</td>". 
      "</tr>";     
      } 
    echo "</table>"; 
    } else { 
     echo "Vaša pretraga nije pronašla niti jedan rezultat."; 
     } 

} 

unset($rezultat); 


//ATLANTIC 
echo '<br><br><div style="color:#922E19">ATLANTIC</div>'; 
trazi($db); 
ob_implicit_flush(true); 
$buffer = str_repeat(" ", 4096); 
echo $buffer; 
ob_flush(); usleep(300000); 

//CEDEVITA 
echo '<br><br><div style="color:#922E19">CEDEVITA</div>';  
trazi($db2); 
ob_implicit_flush(true); 
$buffer = str_repeat(" ", 4096); 
echo $buffer; 
ob_flush(); usleep(300000); 

ETC... 

:

연결이 코드의 나머지 부분입니다, 최대 정의 : 여기에 코드 샘플을 제거한다 그리고 휴식.

문제 : 나는 4D PDO 소스 파일을 변경 한 및 제한 사항을 변경했습니다. 그러나 나는 그것을 컴파일 할 수 없다. 어떻게 알 수 없다. 나는 PC를 가지고 있지 않다. 나의 서버는이 주제에 쓸모가 없다. 나는 Mac에있다. 누군가가이 변경 사항으로 DLL을 컴파일하도록 도울 수 있습니까? 변경 사항이있는 zip 파일을 첨부하겠습니다.

http://forums.4d.fr/4DBB_Main/x_User/18851165/files/18851204.zip

편집; 또는 누군가가 나에게 버그 수정과 함께이 버전을 컴파일 할 수 있습니까? https://github.com/famsf/pecl-pdo-4d

나는 PHP/5.3.8 32 비트를 사용하고 있습니다. 누군가가이 스레드 대답 is here 건너 경우

+0

거룩한 몰리, * 얼마나 많은 * 전역 변수 ?? 배열 들었어? –

+0

당신은이 이야기를 * short *라고 부릅니까? –

+0

그래서 우리는 문제의 실제 원인이 무엇인지 알아내는 대신에 당신을 위해 당신의 일을하도록 요구하고 있습니다. 그래서 당신 자신이 일을 할 수 있습니까? –

답변

2

. 컴파일은 원래 상태 인 것처럼 작동하고 원본 드라이버는 결국 결함이 있습니다. 이 버전이 작동합니다. 우분투에서 스크립트를 호스팅하고 새 드라이버를 컴파일하고 오류없이 32 개의 데이터베이스에 연결합니다.

우분투 12.04가 필요하며 아래 코드를 따르십시오.

# Install dependencies (You may need more) 
sudo apt-get install php5-dev 
# Clone a working version of the code from the FAMSF repo 
git clone https://github.com/famsf/pecl-pdo-4d.git pdo_4d 
cd pdo_4d 
# Prepare the PHP extension for compiling 
phpize 
# Workaround acinclude.m4 pointing to incorrect header location. 
# See: https://bugs.launchpad.net/ubuntu/+source/php5/+bug/1393640 
sudo ln -s /usr/include/php5/ /usr/include/php 
# Configure the package to the system 
./configure --with-pdo-4d 
# Compile! 
make 
# Copy the extension to PHP's library 
sudo make install 
# Create php5 module configuration file for PHP 5.4/5.5 
sudo sh -c "echo extension=pdo_4d.so > /etc/php5/mods-available/pdo_4d.ini" 
# Enable the module for PHP 5.4/5.5 
sudo php5enmod pdo_4d 
# Enable the module for PHP 5.3 
sudo sh -c "echo extension=pdo_4d.so > /etc/php5/conf.d/pdo_4d.ini" 
# Restart apache 
sudo apache2ctl restart 
# Check for PDO_4D in the PHP CLI Information 
php -i | grep 4D 

아래 단계를 위해 자신 만의 폴더를 만들어야합니다.

sudo sh -c "echo extension=pdo_4d.so > /etc/php5/mods-available/pdo_4d.ini 

폴더를 사용할 개조-,이 모든 단지 PHP와 아파치를 설치하기 전에이 모든 명시된대로 할 것입니다하지만 당신은 웹에 많은 설명을 찾을 수 있습니다. 그것은 단지 한 줄의 명령어이고 나머지는 리눅스가한다. 우분투 5.3이 때문에

또한, #은/5.5 PHP 5.4 모듈을 사용 건너 뛰고, 그 모든 당신이 필요합니다.

+0

훌륭한 글쓰기, 감사합니다! – halfer

+1

@halfer no 처음부터 인내심을 가져 주셔서 감사합니다. 나는 갇혀 있었고 내가 말했듯이, 나는 결코 내 인생에서 이런 짓을하지 않았다. 그래서 나는 자신과 지식을 설명하는 것이 제한적입니다. IT 관련 아무것도에 0 교육. 당신은이 사이트가 어떻게 작동하는지 이해하는 데 도움이되었습니다. 다시 한 번 감사드립니다. 건배. – ikiK

+0

문제 없습니다. 필자는 PHP의 다음 버전에 대해 컴파일하려고 노력할 것을 제안합니다. 필자는 며칠 전 개괄적으로 설명했듯이 PHP 5.3을 정기적으로 실행하지 않아야합니다. 위의 과정이 쉽다면, 5.4, 5.5, 5.6, 7.0 등을 차례로 시도해보십시오 (컴파일이 점점 어려워 지거나 전혀 작동하지 않을 수도 있습니다).하지만 단일 범프라도 전혀 사용하지 않는 것보다 낫습니다. – halfer

1

php 7.0의 PDO_4D를 ​​준수합니다. 우분투 16.04 32 비트, 32 드라이버가 32 시스템 용으로 제작 되었기 때문에 중요합니다. 또는 최소한 중요한 것은 드라이버가 32 비트 시스템이라고 생각합니다.

먼저 해당 드라이버 및 PHP 버전이 필요합니다. 중요 http://git.thesecretgamer.de/faldon/pdo_4d.git

: 나는 드라이버의 테스트 버전을 추천 나중에 그것을 할 경우는 PHP 7.1을 설치하고 드라이버가 나를 위해 작동하지 않았기 때문에 당신이 PHP와 아파치를 설치하기 전에 먼저 업그레이드하고 시스템을 업데이트합니다. 이제 몇 가지 불필요한 단계가있을 수 염두에 두어야 서버를

sudo apt-get update 
sudo apt-get install apache2 
sudo apt-get install python-software-properties 
sudo apt install php7.0-cli 
sudo apt-get install php7.0-dev 
sudo apt-get install php7.0-mbstring <--- for some reason you will need this, trust me. 
sudo apt-get install libapache2-mod-php7.0 
apt install git 

// 컴파일

# Install dependencies (You may need more) 
sudo apt-get install php7.0-dev <--- I did this in steps before so skip it. 
# Clone a working version of the code from the FAMSF repo 
git clone http://git.thesecretgamer.de/faldon/pdo_4d.git pdo_4d <----- or just unpack your modified driver with your changes where ever you wont. 
cd /var/4d/pdo_4d <------- navigate to driver folder 
# Prepare the PHP extension for compiling 
phpize 
# Workaround acinclude.m4 pointing to incorrect header location. 
# See: https://bugs.launchpad.net/ubuntu/+source/php5/+bug/1393640 <---- this may be fixed for php 7.0 but i did it anyway. 
sudo ln -s /usr/include/php/20151012/ /usr/include/php 
# Configure the package to the system 
./configure --with-pdo-4d 
# Compile! 
make 
# Copy the extension to PHP's library 
sudo make install 
# Create php module configuration file for PHP 7.0 
sudo sh -c "echo extension=pdo_4d.so > /etc/php/7.0/mods-available/pdo_4d.ini" 
# Enable the module for PHP 
sudo phpenmod pdo_4d 
sudo sh -c "echo extension=pdo_4d.so > /etc/php/7.0/apache2/conf.d/pdo_4d.ini" 
# Restart apache 
sudo service apache2 restart 
# Check for PDO_4D in the PHP CLI Information 
php -i | grep 4D 
php -m 

설치

//하지만이 작품, 내가 4 번을했다. 지난 게시물에 언급 된대로 크레딧이 Brad and this blog post with tutorial for php5으로 이동합니다. 방금 php7.0 용으로 수정했습니다.

+0

@halfer 이제 PHP 7.0에서 얼마 동안 작동합니다. 건배! – ikiK