Blog.Lysov.ru
msgbartop
My own blog
msgbarbottom

26 Jan 12 MySQL MEMORY

MEMORY ENGINE часто используют для хранения/обработки временных данных
Но в таком типе таблиц есть свои ньюансы.
1. Нет типов данных с переменной длиной VARCHAR работает как CHAR, VARBINARY как BINARY, таким образом каждая строка в таблице (UTF-8) будет использовать 3*255=765 байт для значения в поле VARCHAR(255)
2. Ограничение максимального размера таблицы (по умолчанию 16мб) определяется значением переменной max_heap_table_size

Tags: , , , ,

18 Jan 12 Замена & на &

Чтобы заменить амперсанты для размещения ссылок в xml документ можно воспользоваться таким регулярным выражением

$str = preg_replace("/(&(?!amp;))/is", '&',$str)

Tags: , ,

17 Nov 11 Часовой пояс PHP

Для того чтобы обновить часовые пояса в 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: , , ,

28 Sep 11 Как размонтировать NFS

Иногда бывает что подмонтированный по NFS раздел надо размонтировать, а NFS server уже не в сети.

> umount /mnt/bak
umount: /mnt/bak: device is busy

В таком случае помогает команда

> umount -f /mnt/bak

Tags: , , ,

03 Sep 11 Типы таблиц MariaDB на FreeBSD

При установке 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: , , , ,

25 Jan 11 Извлечь один файл из tar.gz

Часто просят восстановить из бэкапов, которые весят, порой ни один гигабайт один или несколько файлов. Как правило бэкапы хранятся в .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: , , ,

25 Aug 10 Ограничения PCRE в PHP5

Столкнулся с проблемой что не парсятся длинные страницы, методом подбора выяснил что размер максимально парсящейся страницы 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: , , , , ,

13 Aug 10 Nginx и *.tar.gz

Столкнулся с проблемой в 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: , , ,

18 Jun 10 FreeBSD количество памяти

когда надо узнать не просто объем памяти, который, к слову, проверяется командой

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

(more…)

04 Jun 10 проверка LSI SAS Raid из Freebsd

На пролиантах ставят, как правило, ддва типа контроллеров 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

Tags: , ,