Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
 |
|

12.06.2009, 00:10
|
|
Постоянный
Регистрация: 05.07.2008
Сообщений: 555
Провел на форуме: 3134311
Репутация:
1467
|
|
Сообщение от Vanofuture
Даже не знаю, что там может быть особенного.
Нужно для каждой записи из таблицы xxx создать запись в таблице yyy, при это надо заменить часть дефолтного текста одним полем из xxx. Мой набросок:
Код:
SELECT `name` FROM `xxx`;
INSERT INTO yyy VALUES(NULL, ( REPLACE(somedata, '%username%', `xxx`.`name`) ) );
Немного не понял некоторых вещей:
0. Это все необходимо сделать на уровне MySQL? Если же в PHP, то могу подсказать.
1. Для каждой записи в xxx надо сделать запись в yyy, но что и чем надо заменить?
|
|
|

12.06.2009, 07:35
|
|
Познающий
Регистрация: 24.04.2008
Сообщений: 34
Провел на форуме: 148656
Репутация:
28
|
|
Сообщение от KaZ@NoVa
Немного не понял некоторых вещей:
0. Это все необходимо сделать на уровне MySQL? Если же в PHP, то могу подсказать.
1. Для каждой записи в xxx надо сделать запись в yyy, но что и чем надо заменить?
0. Да, и что-то я сильно туплю с этим.
1. Замена неозятельна.
Чтобы было понятней скажу что пишу систему массовой рассылки ЛС, в ней нужно для каждого пользователя создать запись в таблице `pm` с заданым текстом и при внесении это в бд дать записи id юзера.
Попробую решить задачу проверенным способом — перепотрошить какой-то готовый двиг и посмотреть как сделано там.
|
|
|

12.06.2009, 10:29
|
|
Постоянный
Регистрация: 03.06.2009
Сообщений: 385
Провел на форуме: 3178262
Репутация:
389
|
|
INSERT messages (text, id_user) SELECT "текст рассылки" as "text", id FROM users
Либо в 2 запроса
Последний раз редактировалось FireFenix; 12.06.2009 в 11:01..
|
|
|

13.06.2009, 12:44
|
|
Постоянный
Регистрация: 06.04.2009
Сообщений: 383
Провел на форуме: 1288105
Репутация:
328
|
|
есть таблица t1 на сервере S1 и точна такая же таблица t2 у меня на локалхосте S2
мне надо периодический переносить новые записи которые появляются на в таблице t1 к себе на локалхост в таблицу t2, т.е организовать синхронизация , таблица на локалхосте t2 сам не меняется только при синхронизации добавляються новые записи из t1.
А теперь внимание вопрос))) как мне это грамотно организовать, что бы быстро все делалось. как ни будь я сам могу сделать, но не нужно грамотно организовать это 
|
|
|

13.06.2009, 14:33
|
|
Постоянный
Регистрация: 03.06.2009
Сообщений: 385
Провел на форуме: 3178262
Репутация:
389
|
|
|
|
|

13.06.2009, 15:32
|
|
Постоянный
Регистрация: 05.07.2008
Сообщений: 555
Провел на форуме: 3134311
Репутация:
1467
|
|
Сообщение от REBUUS
есть таблица t1 на сервере S1 и точна такая же таблица t2 у меня на локалхосте S2
мне надо периодический переносить новые записи которые появляются на в таблице t1 к себе на локалхост в таблицу t2, т.е организовать синхронизация , таблица на локалхосте t2 сам не меняется только при синхронизации добавляються новые записи из t1.
А теперь внимание вопрос))) как мне это грамотно организовать, что бы быстро все делалось. как ни будь я сам могу сделать, но не нужно грамотно организовать это 
Если есть непосредственный коннект к серверам баз данных - организуется репликация (мастер-слейв)
если нет - то через, например, пхп-скрипт, который запускается по времени или вручную
|
|
|

13.06.2009, 22:25
|
|
Постоянный
Регистрация: 05.07.2008
Сообщений: 555
Провел на форуме: 3134311
Репутация:
1467
|
|
Сообщение от REBUUS
есть таблица t1 на сервере S1 и точна такая же таблица t2 у меня на локалхосте S2
мне надо периодический переносить новые записи которые появляются на в таблице t1 к себе на локалхост в таблицу t2, т.е организовать синхронизация , таблица на локалхосте t2 сам не меняется только при синхронизации добавляються новые записи из t1.
А теперь внимание вопрос))) как мне это грамотно организовать, что бы быстро все делалось. как ни будь я сам могу сделать, но не нужно грамотно организовать это 
Я привык к тому, что доступа к удаленному MySQL нету, следовательно либо использовать тулзы для PHP tunneling, либо делается скрипт синхронизации. Суть такова - серверный скрипт при коннекте проверяет подлинность клиента и в случае подтверждения обрабатывает параметры запроса, проверяет изменившиеся данные, генерирует выдачу и возвращает её. Проверка идет таким образом: вначале на S1 пропускается SELECT `какой-то-id` FROM `t1`; и если mysql_num_rows соответствует присланному количеству строк, то возвращаем ответ, что различий нет. Далее mysql_free_result (можно её и не вызывать, если записей немного) и читаем из запроса список уникальных ключей (например, если есть ID с auto_increment, то их список лучше всего), а затем делаем выборку всех полей в том порядке, в котором они идут в таблице:
SELECT `field1`,`field2`,`field3`,...`fieldN` FROM `t1` WHERE `уникальный-ключ` NOT IN ('список','уникальных','ключе й','переданный','клиентом');
=>
while ( $row = mysql_fetch_assoc ( $q ) )
{
и далее пишем строку:
$string = 'INSERT INTO `t2` VALUES (';
$values = array();
А потом:
foreach ( $row as $value ) $values[] = " '$value' "; # кавычки лучше ставить вместе - написал через пробелы, чтобы видно было.
$string .= implode ( ',' , $values ); # в итоге будет строка вида ` INSERT INTO `t2` VALUES ('value1','value2','value3',...,'valueN' `
$string .= ")\r\n";
Ну и потом, соответственно, выдача этого результата в ответ.
Клиентская часть должна через cURL (либо другим способом) забирать результат и, если он не пустой (т.е. изменений нет), выполнять его. То есть при запуске скрипта, он делает выборку уникальных полей и в запрос пишет количество записей в таблице t2 и список уникальных полей, а после забирает то, что возвращает сервер, и выполняет запрос. Еще желательно разбить запрос, например, explode (";\r\n",$response); и выполнять по отдельности, чтобы, в случае необходимости, знать, какая строка ошибку генерирует.
Вот и всё!!!!!!! 
|
|
|

14.06.2009, 03:50
|
|
Banned
Регистрация: 19.06.2006
Сообщений: 1,239
Провел на форуме: 1469161
Репутация:
142
|
|
Вопрос: Почему при выполнении команды show status значения переменных opened_tables и open_tables после совершения запросов через phpmyadmin остаётся неизменным?А также почему Com_show_status содержит 1 после туевой кучи выполнения оной?!
Последний раз редактировалось Велемир; 14.06.2009 в 03:58..
|
|
|

14.06.2009, 04:19
|
|
Banned
Регистрация: 19.06.2006
Сообщений: 1,239
Провел на форуме: 1469161
Репутация:
142
|
|
Есть две директивы: Threads_connected и Threads_running.Можно ли по ним определить количество юзеров,подконнектившихся к базе ?
|
|
|

14.06.2009, 19:12
|
|
Динозавр
Регистрация: 10.01.2008
Сообщений: 2,841
Провел на форуме: 9220514
Репутация:
3338
|
|
Английский совсем не гугу?
http://alertra.com/article103.php
там и пример и хорошие комментарии
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|