MEMORY ENGINE часто используют для хранения/обработки временных данных
Но в таком типе таблиц есть свои ньюансы.
1. Нет типов данных с переменной длиной VARCHAR работает как CHAR, VARBINARY как BINARY, таким образом каждая строка в таблице (UTF-8) будет использовать 3*255=765 байт для значения в поле VARCHAR(255)
2. Ограничение максимального размера таблицы (по умолчанию 16мб) определяется значением переменной max_heap_table_size
Tags: CHAR, Memory engine, MySQL, VARCHAR, размер таблицы
Чтобы заменить амперсанты для размещения ссылок в xml документ можно воспользоваться таким регулярным выражением
$str = preg_replace("/(&(?!amp;))/is", '&',$str)
Tags: амперсант, замена &, регулярное выражение
Для того чтобы обновить часовые пояса в PHP надо установить модуль timezonedb
заходим на http://pecl.php.net/package/timezonedb копируем ссылку на последнюю версию
cd /tmp fetch http://pecl.php.net/get/timezonedb-2011.14.tgz tar -xzvf timezonedb-2011.14.tgz cd timezonedb-2011.14 phpize ./configure make install
Затем добавить в файл /usr/local/etc/php/extensions.ini
строчку extension=timezonedb.so
Всё перезапуск апача и таймзоны будут обновлены
Tags: FreeBSD, php, timezonedb, Часовой пояс
Иногда бывает что подмонтированный по NFS раздел надо размонтировать, а NFS server уже не в сети.
> umount /mnt/bak umount: /mnt/bak: device is busy
В таком случае помогает команда
> umount -f /mnt/bak
Tags: FreeBSD, NFS, umount, размонтирование
При установке MariaDB из портов FreeBSD автоматом не подключаются все ENGINE, например движки InnoDB и XtraDB идут плагинами и по умолчанию отключены.
Чтобы заработали таблицы типа InnoDB можно выполнить один раз команду
INSTALL PLUGIN INNODB SONAME 'ha_xtradb.so';
В итоге получаем такой список поддерживаемых типов таблиц
http://screenshot.su/show.php?img=f66d135a77cd185981b22aae6842a7ef.jpg
В данном случае я не подключил InnoDB ENGINE, чтобы таблицы InnoDB обрабатывались новым движком XtraDB от Percona.
Tags: FreeBSD, InnoDB, MariaDB, MySQL, XtraDB
Часто просят восстановить из бэкапов, которые весят, порой ни один гигабайт один или несколько файлов. Как правило бэкапы хранятся в .tar , .tar .gz или . tar.bz2.
Для начала необходимо узнать путь до нужного файла в архиве tar.gz, для этого можно воспользоваться следующей командой
tar -tzf backup.tar.gz | grep core.php
Для извлечения определенного файла из tar предусмотрена возможность перечисления нужных файлов в виде аргументов.
tar -xzvf backup.tar.gz index.php CORE/core.php
В результате из архива backup.tar.gz будут извлечены не все файлы а лишь два: index.php CORE/core.php.
Tags: tar, tar.gz, архив, извлечение одного файла
Столкнулся с проблемой что не парсятся длинные страницы, методом подбора выяснил что размер максимально парсящейся страницы 120кб, оказалось что в настройках PHP по умолчанию стоит ограничение в 100000 символов.
Вот кусок кода для выявления этой ошибки.
< ?php preg_match... if (preg_last_error() == PREG_BACKTRACK_LIMIT_ERROR) { echo 'Ошибка превышен предел'; } ?>
проблема решается увеличением параметра pcre.backtrack_limit в php.ini
pcre.backtrack_limit=1000000
Tags: backtrack_limit, PCRE, php, PREG_BACKTRACK_LIMIT_ERROR, preg_last_error, regexp
Столкнулся с проблемой в nginx не возможно было докачивать файлы типа tar.gz.
Выяснилось что для файлов .gz в файле mime.types не назначено типа.
Такие файлы выдавались как тип по умолчанию application/octet-stream.
При этом почему-то не выдавалось заголовка Content-Lenght.
Добавление такой строки результатов не дало
application/x-gzip gz;
Проблема решена добавлением расширения gz в строчку zip
application/zip zip gz;
надеюсь это не повлияет на работу nginx по архивированию txt/html on-the-fly
Tags: Content-Lenght, gzip, Nginx, докачка
когда надо узнать не просто объем памяти, который, к слову, проверяется командой
sysctl -a | grep mem
а более подробную информацию о памяти (сколько слотов есть на материнской плате и сколько из них заняты и какими модулями, и какой максимальный объем для данной платы)
dmidecode -t 16,17 Handle 0x002C, DMI type 16, 15 bytes Physical Memory Array Location: System Board Or Motherboard Use: System Memory Error Correction Type: Multi-bit ECC Maximum Capacity: 16 GB Error Information Handle: Not Provided Number Of Devices: 6 Handle 0x002E, DMI type 17, 27 bytes Memory Device Array Handle: 0x002C Error Information Handle: Not Provided Total Width: 72 bits Data Width: 64 bits Size: 1024 MB Form Factor: DIMM Set: None Locator: DIMM1 A Bank Locator: BANK1 Type: DDR2 Type Detail: Other Speed: 667 MHz Manufacturer: 7F7F7F7F7F510000 Serial Number: 1500e616 Asset Tag: Part Number: 373254313238303030455033534232202020
На пролиантах ставят, как правило, ддва типа контроллеров COMPAQ CISS и LSI MPT
для первого посмотреть статус можно стандартным способом
# camcontrol inquiry da0 pass0: {compaq RAID 1 VOLUME OK} Fixed Direct Access SCSI-0 device pass0: 135.168MB/s transfers
Для LSI1068 такой фокус не проходит
camcontrol inquiry da0 pass0: {lsilogic Logical Volume 3000} Fixed Direct Access SCSI-2 device 300.000MB/s transfers , Command Queueing Enabled
Эта проблема решена с помощью утилиты mptutil в 8 freebsd она есть по умолчанию, в остальных надо собрать из исходников
# mptutil volume status da0 Volume da0 status: state: DEGRADED flags: ENABLED, REBUILDING resync: 1.33% complete # mptutil show drives mpt0 Physical Drives: 0 ( 149G) REBUILD ST3160815AS D SATA bus 0 id 7 1 ( 149G) ONLINE ST3160815AS D SATA bus 0 id 8