У нас есть 32 клиентские базы данных, некоторые большие, с миллионами записей (V.11. В настоящее время размещены и основаны на Mac). Я создал сайт на Windows 2012 64x Server и включил последнюю версию PDO с версией PHP, которая была заявлена (Xamp 2.5 с PHP / 5.3.8). Плагин и Apache 32x.
Моя веб-страница подключается ко всем 32 клиентам на серверах 4d sql и запускает несколько SQL-карьеров. Проблемы, с которыми я сталкиваюсь, практически невозможно описать. В некоторых условиях поиска это иногда работает, а иногда нет. Что я имею в виду, если я ищу «jone doe», это дает мне результаты, а если я изменяю одно из последних, этого не происходит, обработчик SQL-соединения на клиенте остается зависшим, а веб-страница переходит на тайм-аут.
Обратите внимание, что нет шаблона. Некоторые поиски висят на одном клиенте. некоторые на 2 или 3. Разный поиск одинаков, но разные клиенты. Только один Поиск для определенного числа из 13 символов проходит все клиенты, и он работает отлично. Позвольте мне также сказать, что я нацеливаюсь на конкретные таблицы и столбцы, так что я уверен, что мой запрос SQL не является проблемой, у меня есть несколько окон поиска, и все они представляют собой одиночный поиск без OR или AND SQL, также я выбираю около 4- 6 столбцов для отображения результатов по одному запросу.
Кроме того, все это в частной сети на работе. Так что соединения не являются проблемой. Добавлю, что результаты могут быть от 0 до 50 максимум на одно соединение. Вот урезанный пример кода:
Соединения определены, это остальная часть кода:
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...
Я действительно надеюсь, что ограничения этого PDO являются проблемой, потому что на некоторых запросах он выбирает слишком много данных и разрывы.
Проблема: я внес изменения в исходные файлы 4d PDO и изменил ограничения. Но я не могу это скомпилировать и не знаю как. У меня нет компьютера, мой сервер не подходит для этой темы, и я нахожусь на Mac. Может кто-нибудь, пожалуйста, помогите мне скомпилировать DLL с этими изменениями. Я приложу почтовый файл с внесенными изменениями.
http://forums.4d.fr/4DBB_Main/x_User/18851165/files/18851204.zip
Редактировать; или кто-то может скомпилировать мне эту версию с исправлениями ошибок;
https://github.com/famsf/pecl-pdo-4d
Я использую PHP / 5.3.8 32bit.
Если кто-нибудь сталкивался с этой веткой ответ это здесь. Компиляция работает так, как говорится, и оригинальный драйвер все-таки неисправен. Эта версия работает. Я размещаю свой скрипт на Ubuntu и скомпилировал новый драйвер и подключил его к 32 базам данных без ошибок.
Вам понадобится Ubuntu 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
папка mods-available, и все будет делать так, как заявлено, прежде чем все это просто установить PHP и Apache, но для этого вы можете найти много объяснений в Интернете. Это всего лишь одна строка, а Linux сделает все остальное.
Также пропустите # Включить модуль для PHP 5.4 / 5.5, потому что в Ubuntu будет 5.3, и все, что вам нужно.
Завершение PDO_4D для PHP 7.0. На Ubuntu 16.04 32bit, 32 это важно, потому что драйвер был сделан для 32 систем, или, по крайней мере, я думаю, что это важно …
Сначала вам нужна соответствующая версия драйвера php и php.
Я рекомендую эту протестированную версию драйвера: http://git.thesecretgamer.de/faldon/pdo_4d.git
ВАЖНО: сначала обновите и обновите вашу систему перед установкой php и Apache, потому что, если вы сделаете это позже, она установит php 7.1, а драйвер у меня не сработает.
// Установка сервера
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 раза.
Кредиты идут, как указано в последнем сообщении Бред и это сообщение в блоге с учебником для php5. Я просто изменил его для php7.0