Вот я и думаю - или NULL заложить, или некое нереальное значение по дефолту, чтобы по нему было видно, что оно не через вставку появилось, а по умолчанию.
Лучше, значит, дефолт?
У меня эти поля используются только при выборке данных, никаких условий по ним и сортировок не делается.
Поскольку мой сервер под виндой, сделал всё через COM WMI:
$wmi = new COM('winmgmts://');
$processes = $wmi->ExecQuery('SELECT CommandLine, ExecutablePath, CreationDate, ProcessId FROM Win32_Process');
По свойству CommandLine ищу нужные процессы (нужные значения заданы заранее и уникальны). Завершаю тоже по нему - делаю выборку ProcessId по условию CommandLine и запускаю taskkill.
Да, хорошая идея, хранить можно и в БД такую инфу, до кучи ещё и дату запуска туда записывать. А для проверки вызывать shell_exec'ом tasklist и там искать. Пожалуй, так и сделаю. Спасибо.
@Melkij да, деление обоснованное (на мой взгляд) - отделить остальные таблицы от разросшейся старой, разделенной на несколько новых таблиц.
Значит, будем делить сначала по базам данных, включим партицирование для архивирования и потом смотреть и делать шаги в сторону шардинга и возможной миграции на другую СУБД. Верным путём пойдем?
@Melkij хороший вариант. Но, к сожалению, миграция в нашей ситуации не самый лёгкий процесс, а решение нужно в ближайшие пару недель. Пока таблиц не так много, всего 5, но через месяц их станет 50.
Сейчас нам надо сделать хоть какое-то решение, и уже потом будем анализировать и планировать миграцию (а заодно и целесообразность увеличения количества серверов).
Партицирование у нас закладывается вторым шагом - для архивирования записей старше 1 месяца в этих таблицах. А все over 9000 таблиц нужны нам в быстром доступе.
А у этих вариантов информация сохраняется где-нибудь после завершения работы? Или только в браузере? Есть смысл прикрутить выгрузку к Sql.js для бэкапов?
А если выгружать данные в файл после изменений? Или будет слишком медленно и глючно?
Идея в том, чтобы сделать веб-приложение сначала чисто под оффлайн, а потом перевести его в онлайн, если всё получится. Стоит ли это того, или лучше наклепать по-быстрому прототип в каком-нибудь C# или Delphi и не париться?
@Arris сейчас допёр, что gzip у меня с git'ом поставился, а саму папку с bin'арниками в системные переменные записал. Поэтому спокойно из консоли вызывал его )))
@Arris@DaFive отлично себя показал вариант с прямым выводом файла из поста habrahabr.ru/post/18726
С небольшим нюансом для русского текста в функции xlsWriteLabel:
> $Value = iconv('UTF-8', 'CP1251', $Value);
И всё генерируется быстро и как надо
@kfuntov Excel сжимается где-то в 4-5 раз всего. Excel делал через библиотеку PHPExcel, считывал исходный файл в массив:
$lines = gzfile($file);
И по очереди вписывал все элементы в генерируемый файл:
foreach ($lines as $line) {
$page->setCellValue(...)
}
Теперь либо заранее генерировать (дальше сжимать или закачивать на ЯДиск), либо отказываться и отдавать фиктивный csv-файл с разделителями ";" и кодировкой под Excel.