Показаны сообщения с ярлыком MySQL. Показать все сообщения
Показаны сообщения с ярлыком MySQL. Показать все сообщения

18.11.2008

CakePHP

Что-то я все чаще стал натыкаться на посты о Ruby On Rails, MVS и разных php-фреймворках. Думаю, пора обратить свое пристальное внимание на эту область веб-разработки.

С этого поста начну рассматривать один из самых популярных php-фреймворков на сегодняшний день – CakePHP.
Мы уже рассматривали различные js-фрейморки – jQuery и Dojo. Суть php-фреймворков все та же – упростить процесс разработки приложения.
Фреймворк CakePHP имеет архитектуру MVC (Model-Viewer-Controller) – “Модель-Вид-Представление”. Суть этой архитектуры заключается в разделении приложения на три составляющих – модель данных, пользовательский интерфейс и управляющая логика. Причем архитектура спроектирована так, что изменения одного из компонентов практически не отражается на других двух. Ключевым моментом тут является то, что представление и поведение зависят от модели, модель не зависит ни от представления, ни от поведения. Подобная организация позволяет строить модель независимо от визуального представления, а также создавать несколько различных представлений для одной модели.
С официального сайта CakePHP.org я скачал последнюю стабильную версию для своих экспериментов. После распаковки архива внутри вы увидите несколько папок: app, cake, docs и vendors.
Вот их предназначение: App – ваше приложение Cake – ядро фреймворка Docs – ну тут документация небольшая, лицензия, все дела. Vendors – тут можно будет складывать сторонние библиотеки
Раз все наше приложение будет находиться внутри папки app, следует разобраться, что там к чему. А внутри этой папки находится еще несколько папок: config, controllers, models, plugins, tmp, vendors, views, webroot.
С папкой config понятно – тут лежат конфиги фреймворка, конфиги для работы с базой данных и т.д.
Сontrollers, views и models соответственно будут содержать наше приложение разделенное на три компоненты, которые я упоминал ранее.
Plugins и vendors – плагины и сторонние библиотеки “быстрого доступа”, которые можно будет подгружать средствами фреймворка.
Tmp – тут временные файлы фрейморка (логи, кэш, сессии и т.д.).
Webroot – это, собственно, рабочая папка нашего проекта, которая также будет содержать папки с картинками, css-файлами и js-криптами.
Переходим к практической части.
Итак, быстрый старт. Продолжение на: http://i-novice.net/cakephp-bystryj-start/#more-120

Sypex Dumper

Sypex Dumper — это PHP-скрипт, с помощью которого можно просто и быстро создать резервную копию (бекап, дамп) базы данных MySQL, а также восстановить в случае необходимости базу данных из резервной копии. Sypex Dumper в отличии от многих подобных скриптов не загружает бекап-файл целиком в память, благодаря чему, ему безразличен размер базы данных и он одинаково быстро работает, как с маленькими, так и с большими объемами данных. Sypex Dumper создан специалистами украинской компании БИНОВАТОР. Sypex Dumper Lite распространяется по лицензии GNU GPL, т. е. является абсолютно бесплатным.

Простая защита от DoS-атак с помощью MySQL

Организовать простую защиту от DoS-атак для сайтов, использующих PHP MySQL, можно следующим образом. В MySQL создается таблица (будем называть ее ip_check) с полями lasttime, count, ip (все поля — типа INTEGER, причем ip — первичный ключ).

Сразу после подключения к базе данных выполняется проверка, есть ли для данного IP-адреса запись в таблице. Если записи нет, она создается, при этом в count пишется 1, в lasttime — текущее время. Если запись уже есть, то проверяется, когда она была сделана (поле lasttime), и если прошло менее определенного количества секунд, то поле count увеличивается на 1, в противном случае приравнивается единице, и производится обновление записи в таблице (записывается новый count и lasttime). Далее происходит проверка величины count, и если она превысила некоторое пороговое значение, выдается статус 500 (или 403 или 503), сообщение об ошибке, и выполнение скрипта завершается.

Таким образом, для выполнения проверки требуется всего одной таблица с предельно простой структурой и 2 запроса SQL. Также можно добавить еще одно поле status, в которое ставить 1, если IP-адрес забанен навсегда по каким-то причинам, и совместить проверку на DoS-атаки с проверкой на забаненные IP-адреса без добавления дополнительных запросов. При необходимости можно еще одним запросом добавить учет суммарной нагрузки за все время или нагрузки по подсетям.

Кроме того, перед завершением скрипта можно добавить проверку, сколько времени заняло его выполнение, и если оно превышает какую-то пороговую величину (например, 10 секунд), начислять этому IP-адресу “штрафные очки” (т.е. дополнительно увеличивать поле count).

В виде кода это можно представить следующим образом:

// $link -- соединение с БД, $ip_text -- IP-адрес
define('ALERT_TIME',300);
define('ALERT_COUNT',150);

function check_dos($ip_text, $link)  {
$ip=ip2long($ip_text);
$res=mysql_query($link,'SELECT lasttime, count, status FROM ip_check WHERE ip="'.$ip.'"');
if (mysql_num_rows($res)==0) { // нет такого IP
$count=1;
mysql_query($link,'INSERT INTO ip_check (lasttime,count,ip,status) VALUES ('.time().',1,"'.$ip.'",0)');
}
else {
$data=mysql_fetch_row($res);
$status=$data[2];
if ($status!=2 && ($data[0]<time()-ALERT_TIME || $data[1]<ALERT_COUNT)))   $count=1;
elseif ($status!=2) { $count=$data[1] 1; if ($count>=ALERT_COUNT) $status=1; }
if ($status!=2) {
  mysql_query($link,'UPDATE ip_check SET count='.$count,', status='.$status.', lasttime='.time().' WHERE ip="'.$ip.'"';
}
if ($status) {
  header($_SERVER['HTTP_PROTOCOL'].' 503 Temporary Unavailable');
  trigger_error('Превышено число допустимых запросов!',E_USER_ERROR);
}
}

Кроме того, периодически следует очищать базу от старых записей (например, по cron). Кроме того, если ожидается большая интенсивность атак, возможно, имеет смысл заменить UPDATE-запрос на последовательность DELETE/INSERT, но в этом случае необходимо будет регулярно проводить оптимизацию таблицы.

Источник: Профессиональный Блог 4X_Pro http://www.xpro.su/archives/59

26.07.2008

Справочное руководство по MySQL

Это — справочное руководство по MySQL; оно представляет собой документацию по MySQL версии 4.0.10-gamma. Функциональные изменения отмечены номером версии, в которой они произведены, поэтому это руководство будет полезно при освоении также и более старых версий MySQL. Поскольку данный материал носит чисто справочный характер, в нем не содержится основных положений SQL или сведений по реляционным базам данных. Руководство часто обновляется, поскольку ПО СУБД MySQL находится в состоянии постоянного развития. Самая последняя версия данного руководства доступна по адресу http://www.mysql.com/documentation/ в различных форматах, включая HTML, PDF и Windows HLP. Исходным документом для всех версий документации является файл Texinfo. HTML-версия генерируется автоматически модифицированной версией texi2html. Текстовая и Info-версии генерируются при помощи makeinfo, PostScript-версия создается texi2dvi и dvips. PDF-версия генерируется с помощью pdftex. Если найти нужную информацию в руководстве не удается, можно прибегнуть к помощи версии руководства с функцией поиска, находящейся по адресу http://www.mysql.com/doc/.

10.05.2008

Новая версия HeidiSQL

Появилась новая версия HeidiSQL 3.2. На данній момент просто незаменимая программа для работы с базой данных MySQL. И, к тому же, она абсолютно бесплатна.Опубликовать сообщение

01.05.2008

Учебное пособие по PHP MySQL

Это действительно превосходный источник для начинающих PHP-программистов. Автор приводит массу примеров кода, используя который вы сможете сделать:

  • подключение к базе данных,
  • добавление, редактирование и удаление записей,
  • извлечение данных,
  • создание резервной копии базы данных.
Еще в довесок, на примере, разъясняется как создать простую CMS, использовать аутентификацию пользователей, создавать галерею изображений, а также форму с проверкой введенных пользователем данных. Ресурс — просто настоящая находка для тех, кто хочет подобные вещи сделать самостоятельно, не прибегая к помощи специалистов.

Архив блога