
Денис
16.10.2018
11:32:39
а вообще я б в таком случае разделил бд и веб по разным сервакам

Артем / IT
16.10.2018
11:34:30

iBird
16.10.2018
11:35:13
тк уже целый день добавить пытаюсь)
нагуглил ALTER TABLE xxx ADD COLUMN , ALGORITHM = INPLACE, LOCK = NONE
не помогает.

Google

iBird
16.10.2018
11:35:21

Денис
16.10.2018
11:37:22
ALTER TABLE big_table ADD new_field VARCHAR(255) NOT NULL AFTER any_field;

iBird
16.10.2018
11:44:56

Денис
16.10.2018
11:45:21
ну так конечно подождать придётся

iBird
16.10.2018
11:45:54
такое будет делаться часа 2 минимум. я не могу позволить чтобы сайт в даунтайме был это время

Dmitriy
16.10.2018
11:46:15

Денис
16.10.2018
11:49:32
Оператор ALTER TABLE во время работы создает временную копию исходной таблицы. Требуемое изменение выполняется на копии, затем исходная таблица удаляется, а новая переименовывается. Так делается для того, чтобы в новую таблицу автоматически попадали все обновления кроме неудавшихся. Во время выполнения ALTER TABLE исходная таблица доступна для чтения другими клиентами. Операции обновления и записи в этой таблице приостанавливаются, пока не будет готова новая таблица.
исходя из определения тебе просто нужно помощнее железо либо время)

Vladislav
16.10.2018
11:50:24
Делается полная копия старой таблицы + новое поле. Навешиваешь триггеры на старую таблицу для синхнонизации данных. Запускаешь процесс миграции данных. Разрываешь внешние ключи по старой таблице и навешиваешь на новую. Удаляешь старую таблицу и переименовываешь новую в старое название.
Главное хорошо головой дружить с транзакциями и блокировками.

Dmitriy
16.10.2018
11:52:25

Денис
16.10.2018
11:52:55
легко сказать удаляешь внешние ключи))) это все таблицы которые используют её поля будут искать старую таблицу, я как-то скопировал... потом проклинал

Vladislav
16.10.2018
11:54:32
Так в одной транзакции удаляешь старые FK и создаешь новые. Но индексы для FK уже должны быть для более быстрой подмены FK.

Sergey
16.10.2018
11:55:42

Google

Vladislav
16.10.2018
11:55:45
Поля не нужно удалять при этом. На весь период перехода на новую таблицу ее структура не должна меняться.

Sergey
16.10.2018
11:57:53

Vladislav
16.10.2018
11:58:40
Да, но намного короче период блокировки и сохранение консистентности.

Шерали
16.10.2018
12:12:06
Всем привет. Подскажите по коду, пожалуйста.
Функция из учебника. Она сортирует массив с именами файлов и папок по ключам (ключ - имя файла или папки), так, что элементы с именами папок предшествуют элементам с именами файлов. Проще говоря - сначала папки, затем файлы. Вот ее код:
uksort($files, function($f1, $f2) {
if (is_dir($f1) && !is_dir($f2)) return -1;
if (!is_dir($f1) && is_dir($f2)) return 1;
return $f1 <=> $f2;
});
Несовсем понятно, что происоходит в этих строчках:
if (is_dir($f1) && !is_dir($f2)) return -1;
if (!is_dir($f1) && is_dir($f2)) return 1;

Денис
16.10.2018
12:18:02
сортировка так работает, три триггера -1 меняет вниз, 1 меняет вверх, 0 ничего не делает
is_dir просто проверяет папка или не папка.

Evgeniy
16.10.2018
12:20:47
Кто знает какую cms лучше использовать для того чтобы в таблицу на сайте добавлять информацию через загрузку xls файла? Спасибо

Шерали
16.10.2018
12:21:01
Условие мне понятно. Просто не понятно, что происходит когда возвращается -1, когда 1 после отработки этих условий. В случае с return понятно, так как там обычное лексигафическое сравнение строк идет

ExPandable
16.10.2018
12:21:22

Алексей
16.10.2018
12:32:04
https://vk.com/thelexi?w=wall13449629_1741%2Fall

alex
16.10.2018
12:45:14
подскажите как поймать код который делает редирект?*

Andrew
16.10.2018
12:46:00
найти слово Location в коде?

Ad.x ??
16.10.2018
13:11:02

Andrew
16.10.2018
13:14:14
чат то про пхп
в этом контексте и отвечаю

Dima
16.10.2018
13:14:42
Всем привет.
Подскажите, как лучше сравнить 2 списка разной длины, в которых массивы с ключами. И сравнение провести по одному ключу. Если ключи совпадают - то сделать замену значения по ключу из одного массива в другой.
Может есть какой-то метод для этой задачи подходящий?
чтобы не плодить цикл в цикле

Anonymous*
16.10.2018
13:16:32
там специальные функции есть какие-то для массивов

ExPandable
16.10.2018
13:16:35
array_diff?

Google

Anonymous*
16.10.2018
13:16:36
типа array_map
Ну вообще тут вроде один цикл

Денис
16.10.2018
13:18:29
сначала array_diff_key, затем по ключам не вошедших в список в цикле переприсваиваешь

Dima
16.10.2018
13:20:22
ага, спасибо) попробую

Алексей
16.10.2018
13:28:07
это так надо поступать, если есть несроковые ключи

Денис
16.10.2018
13:29:47
точно интерсек же есть)

Алексей
16.10.2018
13:30:00
если ключи гарантировано строовые - тогда хватит просто array_merge
при строковых ключах он заменит предыдущие значения - следующими

Sergey
16.10.2018
13:30:59

Dima
16.10.2018
13:31:35
Дело в том, что у меня ключи в массивах 0,1,2,3,4 и т.д. по кол-ву элементов в массиве. А вот эти элементы - они уже имеют ключи по которым нужно сравнивать.

Anonymous*
16.10.2018
13:31:59
содержимое элемента есть ключ?

Anonymous*
16.10.2018
13:32:23
а что тогда менять, индексы?

Алексей
16.10.2018
13:32:41

Dima
16.10.2018
13:32:51
вот такая структура
и второй такой же, только у него кол-во элементов другое может быть

Алексей
16.10.2018
13:33:12
а... ну тогда array_column сначала

Dima
16.10.2018
13:33:13
а заменять надо поле name

Sergey
16.10.2018
13:33:40

Денис
16.10.2018
13:33:45
так если оно всегда name

Google

Денис
16.10.2018
13:34:21
ты ж написал ключи менять нужно

Алексей
16.10.2018
13:34:25
а нафига такой стремный массив

Dima
16.10.2018
13:34:31
там еще есть поле id рядом c name
по этому id и проверяется соотв
поле id забыл вписать(

Алексей
16.10.2018
13:34:53
ох епт.. структуру.. выдал

Денис
16.10.2018
13:34:53
и что? так тебе значение нужно проверить чтоб другое поменять

Admin
ERROR: S client not available

Денис
16.10.2018
13:35:10
тут ключи вообще непричём

Алексей
16.10.2018
13:35:44

Sergey
16.10.2018
13:35:45

Dima
16.10.2018
13:35:50

Алексей
16.10.2018
13:35:52
больше сюрпризова нет?

Денис
16.10.2018
13:36:06
)))

Dima
16.10.2018
13:36:08
нет)

Алексей
16.10.2018
13:38:38
$m = [['name'=>'n1','id'=>1]]['name'=>'n2','id'=>2]['name'=>'n3','id'=>3];
$nm = array_combine(array_column($m,'name'),array_column($m,'id')) // ['n1'=>1,'n1'=>2,'n1'=>3]

Dima
16.10.2018
13:39:45
https://gist.github.com/treef90/b3c887e3cf5e4194654c3b8ca9a7c041

Алексей
16.10.2018
13:39:59
аааа

Google

Алексей
16.10.2018
13:41:13
$m1 = [['name'=>'n1','id'=>1]]['name'=>'n2','id'=>2]['name'=>'n3','id'=>3];
$nm = array_combine(array_column($m1,'id'),array_column($m1,'name')) // ['n1'=>1,'n1'=>2,'n1'=>3]
тоже делаешь со вторым массивом
потом array_replace

Dima
16.10.2018
13:42:58
ага, понял) Спасибо)
Массивы да, действительно не оч. выглядят(

Sergey
16.10.2018
13:44:36
Подскажите, плз, как можно в CSV взять значение из столбца (допустим Б) и вставить в столбец (допустим Ж), но с дополнительными значениеями из скрипта. При этом значенией может быть несколько.

Денис
16.10.2018
13:45:51
структуру csv смотрел? откуда он знает что такое Б

Алексей
16.10.2018
13:46:12

Anonymous*
16.10.2018
13:46:32
что это за говно?

Sergey
16.10.2018
13:47:04
fputcsv - записывает. А как указывать-то?

Anonymous*
16.10.2018
13:47:06
хоть бы переносов строк поменьше ставил, чтоли

Dima
16.10.2018
13:47:41
удалил, в гисте структура была

Алексей
16.10.2018
13:47:44

Dima
16.10.2018
13:47:48
это было так, для быстрого примера

Алексей
16.10.2018
13:48:18
делаешь операции над массиом и херачишь в новый фаил fputcsv
ежли нужо как то извратиться - типа вложенной таблицы, json тебе в помощь

Денис
16.10.2018
13:52:42

Sergey
16.10.2018
14:01:36
Хм.....спс....сейчас попробую сваять....
Нет. Мне нужно что бы имена файлов, которые генерирует скрипт, заводились в таблицу, точнее в нужный столбец.

Константин
16.10.2018
14:02:24
Подскажите пожалуйста в чем дело ssh-keygen -f /root/.ssh/known_hosts не может записать
?