LinuxForum.Fans
Тема

Обработка DBR'ом таблиц MySQL на CentOS

Автор: iAlexandre 8 сообщений 2118 просмотров
#388137

Всем доброго времени суток, снова столкнулся с проблемой, которую не могу что-то никак решить.

Итак: есть VPS с CentOS, на нем работает небольшой php-скрипт, который заносит в одну общую таблицу MySQL (назовем ее "alldata") данные, которые поступают на сервер извне и хранятся в обычном txt. Далее, в этом php-скрипте инклудится обработчик sortirovka.dbr, который отвечает за сортировку всех данных из таблицы "alldata" по всем остальным таблицам MySQL ("firma","gorod","strana" и т.д.).
И вот тут проблема: в таблицу "alldata" значения пишутся, а вот дальше уже не сортируются. Я так понимаю, что как раз проблема в работе *.dbr . Возможно, что-то нужно докрутить в конфиге апача или в настройках mysql на самом сервере для корректной работы данной конструкции? Или в чем беда?

Буду весьма признателен за любые советы и любую информацию! *DRINK*

#388139

Включаете отладку в скриптах и на каждом шагу в скрипте выводите информацию, выполнен ли шаг успешно или нет.
Если что-то идет не так как нужно, получаете ошибку на экран.

Обычно, если скрипты рабочие, а всеравно, что-то не работает.
Скорее всего проблемы с форматом данных. Может кодировка у вас указана неправильная, или формат дата/время отличается от нужного.

Как выводить сообщения на экран:
Не работает include (); CentOS 6

#388153
"Marley" написал:
Скорее всего проблемы с форматом данных. Может кодировка у вас указана неправильная, или формат дата/время отличается от нужного.
Как выводить сообщения на экран:
Не работает include (); CentOS 6

Спасибо, с сообщениями на экран попробую.
А разве может быть проблема с кодировкой, если там в таблицах нет кириллицы, а используется немного латиницы и в основном одни цифры? Может ли на это влиять кодировка utf-8 вместо cp1251, например?

UPDATE: Попробовал прописать в .htaccess.
Что-то не выводятся никакие сообщения и в лог ничего не складывается. Даже файл лога пришлось вручную создавать, все-равно не помогло. Поставил права 777, оставил в .htaccess только Ваш код, перегрузил апач, ничего не дало тоже)

#388178

А у вас apache работает с .htaccess?
В прошлый раз когда разбирались, не работал.

Вообщем нужно, настроить его работу.
Насколько я помню, нужно внести несколько правок в httpd.conf в разделе dirctory.

============================
Можно посмотреть какой запрос выполняется в скрипте и попробовать его выполнить в какой нибудь среде для работы с MySQL.

============================
Что такое DBR мне неизвестно, может покажете исходники?

#388222

А у вас apache работает с .htaccess?
В прошлый раз когда разбирались, не работал.
Вообщем нужно, настроить его работу.
Насколько я помню, нужно внести несколько правок в httpd.conf в разделе dirctory.

Ну вроде как работает, я прописал AllowOverride All в httpd.conf в двух местах , теперь такая картина:
[console][root@vps conf]# grep AllowOverride httpd.conf
AllowOverride All
# AllowOverride controls what directives may be placed in .htaccess files.
AllowOverride All
# AllowOverride FileInfo AuthConfig Limit
# for additional configuration directives. See also the AllowOverride
AllowOverride None
AllowOverride None
AllowOverride None[/console]
я так понимаю этого достаточно для работы .htaccess?

Можно посмотреть какой запрос выполняется в скрипте и попробовать его выполнить в какой нибудь среде для работы с MySQL.

Можно попробовать, но я не знаю подходящие для этого программы под Мас. Буду искать.

Что такое DBR мне неизвестно, может покажете исходники?

Да, конечно. Небольшой кусок кода:

Показать
text
<?

class dbr{

function dbr($type){} function abon($type){ global $kon,$mod; $link = $this->connect_to_mysql(); $query = "select kacod,katype from alldata where kamod=$mod and kakontr=$kon and katype=$type"; if($result1 = mysql_query($query,$link)){ while($row1 = mysql_fetch_object($result1)){ $user=$row1->kacod; } } return $user; } function connect_to_mysql(){ $link = mysql_connect(MY_HOST, MY_DB, MY_USER, MY_PASSWD);// устанавливаем соединение с БД mysql_select_db(MY_DB,$link); mysql_query('SET NAMES utf8'); mysql_query ("set character_set_client='utf8'"); mysql_query ("set character_set_results='utf8'"); mysql_query ("set collation_connection='utf8_general_ci'"); if($link) return $link; else false; } //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Обработка данных function beac($arr_beac,$date){ global $kon,$mod; $user1=$this->user(1); $user2=$this->user(2); foreach ($arr_beac as $param=>$str){ $query=''; switch ($param){ case "street": if(preg_match("/Str_/",$str))$str=str_replace("Str_","(",$str).")"; $query = "delete from kastree where kacod=$user1 and date='$date'"; if(isset($user1) && $user1!='')mysql_query($query); $query = "insert into street(kacod,date,kastr) values($user1,'$date','$str')"; if(isset($user1) && $user1!='')mysql_query($query); break;

} } }

P.S. Возможны кое-какие неточности со значениями, ибо это черновая версия, рабочей под рукой нет. Но в финальном варианте все как нужно. Только вот все никак не удается заставить его начать на сервере данные обрабатывать..(

#388237

Ставите в качестве клиента phpmyadmin или обычный клиент для всех осей от mysql. Называется, вроде mysql workbench.
Перед вызовом sql запроса на добавление данных, с помощью echo выводите этот запрос. Потом вставляете его в phpmyadmin и смотрите, что не так.

#388263

За программу спасибо, загружу.
Очень извиняюсь, а можно написать то же самое, но как-то в форме более доступной обычному юзеру?:)
Не понял про echo и запрос. И вставку в phpmyadmin - это имеется ввиду просто выполнить SQL-запрос к базе данных?

#388364

По поводу .htaccess
Беру конфиг со свежеустановленного Apache:

В httpd.conf

text

# This should be changed to whatever you set DocumentRoot to. # <Directory "/var/www/html">

# # Possible values for the Options directive are "None", "All", # or any combination of: # Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews # # Note that "MultiViews" must be named *explicitly* --- "Options All" # doesn't give it to you. # # The Options directive is both complicated and important. Please see # http://httpd.apache.org/docs/2.2/mod/core.html#options # for more information. # Options Indexes FollowSymLinks

# # AllowOverride controls what directives may be placed in .htaccess files. # It can be "All", "None", or any combination of the keywords: # Options FileInfo AuthConfig Limit # # AllowOverride None AllowOverride All # # Controls who can get stuff from this server. # Order allow,deny Allow from all

</Directory>

Вместо

text

AllowOverride None

пишете:

text

# AllowOverride None AllowOverride All

Перестартовываете сервер.

Создаете в каталоге со скриптами (ссылка на него в Directory в данном случае "/var/www/html")

файл .htaccess с содержимым:

text

AddDefaultCharset UTF-8 DirectoryIndex index.php index.html Options +Indexes

order deny,allow deny from all allow from 192.168.1.5

### Show Errors on Page

php_flag display_errors on # E_ALL has code 2047 php_value error_reporting 2047 php_flag display_startup_errors on php_flag html_errors on # php_value error_log /var/www/html/PHP_errors.log

Вместо 192.168.1.5, указываете не тот ip с которого работаете.
Если получаете сообщение, что добсуп заблокирован, все ок.

Далее выполняете то, с чем у вас возникают ошибки. Возможно, что удастся их сразу отловить.

=====================

Ели ошибок нет или вам они непонятны.
Копируете в каталог, где находится ваше приложение вот этот скрипт http://www.phpmyadmin.net/
И запускаете его по http://ip_сайта/phpmyadmin
=====================

В скриптах, после
$query = " какие-то команды";

(Лучше конечно, непосредственно перед их вызовом.)

пишете

text

echo "<br/>";
echo $query;
echo "<br/>";

Получаете запрос, который выполняет скрипт.
Вы его копируете, при необходимости изменяете и вставляете в phpmyadmin (предварительно выбрав нужную базу, в окне для sql запросов).

Только делайте аккуратно, там у вас операции и по удалению имеются.
В phpmyadmin, предварительно сделайте копию базы и экспериментируйте с копией.

Войдите или зарегистрируйтесь, чтобы ответить.