Скрипт форума на PHP своими руками

Несколько месяцев назад я взялся за написание скрипта форума. В этом не было особой необходимости — но хотелось приобрести новый опыт, набить положенное количество шишек и т.п. Я не ставил перед собой цель написать полнофункциональный форум, вроде IPB, а лишь реализовать основные функции, чтобы форум имел право именоваться форумом. Возможно, начинающим программистам и web-мастерам будет интересно:

Скачать исходные коды форума

Установка:

  1. указать параметры соединения с сервером БД в файле config/connect.php
  2. набрать в адресной строке браузера http://path_to_forum/install.php
  3. удалить файл install.php
  4. зайти на форум от имени пользователя admin (пароль admin) и поменять пароль

Создание экрана ожидания

Одним из самых существенных ограничений современных web-служб является время ожидания, когда нечто происходит, но в фоновом режиме, о чем следует непременно уведомить пользователей, иначе они не обратят внимания на происходящее. Для этой цели можно изменить вид курсора (cursor:wait) или же вывести надпись “ожидание” или “загрузка”, например при обработке вызова XMLHttpRequest. Web-cайт Google Mail стал одним из первых, где был использован данный прием.

При отправке асинхронного запроса на сервер в правом верхнем углу появляется экран загрузки (впрочем, его можно расположить в каком угодно месте). Как только от сервера возвратятся данные, экран загрузки становится невидимым.

Файл loading.html

<html>
<head>
<title>Loading...</title>
<script language="JavaScript" type="text/javascript" src="ajax.js"> </script>
</head>
<body>
<input type="button" value="Загрузить" onclick="loadData();" />
<span id="loading"
style="position: absolute; right:0; top:0; visibility: hidden; color: red;">
Загрузка...</span>
</body>
</html>

Файл ajax.js

var XMLHttp = getXMLHttp();

function loadData() {
  XMLHttp.open("GET", "delay.php", true);
  XMLHttp.onreadystatechange = handlerFunction;
  XMLHttp.send(null);
  document.getElementById("loading").style.visibility = "visible";
}

function handlerFunction() {
  if (XMLHttp.readyState == 4) {
    document.getElementById("loading").style.visibility = "hidden";
    window.alert("Ответ сервера: " + XMLHttp.responseText);
  }
}

function getXMLHttp() {
  if (window.XMLHttpRequest) {
    try {
      XMLHttp = new XMLHttpRequest();
    } catch (e) { }
  } else if (window.ActiveXObject) {
    try {
      XMLHttp = new ActiveXObject("Msxml2.XMLHTTP");
    } catch (e) {
      try {
        XMLHttp = new ActiveXObject("Microsoft.XMLHTTP");
      } catch (e) { }
    }
  }
  return XMLHttp;
}

Серверный скрипт delay.php

<?php
  sleep(10);
  echo 'результат запроса';
?>

Вместо надписи “Загрузка…” можно использовать какую-нибудь анимированную картинку:

Красивый индикатор загрузки можно загрузить с сайта http://www.ajaxload.info/:

   

Sypex Dumper — быстрый и удобный бекап

Наткнулся в Сети на очень интересный скрипт для резервного копирования базы данных - ниже приводится его описание с официального сайта.

Изначально Sypex Dumper создавался для работы с большими базами данных (сотня мегабайт для него не проблема), при этом он должен был быть максимально быстрым, компактным и удобным.

Основные возможности

  • создание резервной копии и восстановление базы данных MySQL без использования сторонних программ, таких как mysqldump;
  • работа с базами данных любых размеров (от нескольких килобайт до сотен мегабайт), в связи с этим вся работа с файлами бекапа осуществляется по FTP, но download возможен и с помощью менеджера загрузки (Download Master, Reget и др.);
  • поддержка двух форматов сжатия файлов (Gzip и Bzip2), а также разной степени сжатия;
  • поддержка фильтров для таблиц, с их помощью легко можно выбрать нужные таблицы;
  • работает на Windows и Linux;
  • высокая скорость работы (в 2 раза быстрее, чем phpMyAdmin);
  • оригинальный алгоритм парсинга дампов благодаря которому дампер обгоняет даже некоторые windows-приложения, не говоря уже о скриптах (в 4 раза быстрее, чем phpMyAdmin);
  • индикатор выполнения задачи, благодаря чему всегда видно на каком этапе работы находится срипт;
  • очень компактный (всего 25 КБ);
  • легко настраивается;
  • сохраняются последние настройки, что удобно при частом использовании;
  • имеется собственная система авторизации, несколько вариантов авторизации, в том числе пользовательская;
  • небольшой расход памяти при работе;
  • совместимость с дампами phpMyAdmin и mysqldump;

История создания

Началась, наша история, когда база данных одного сайта всё сильнее разрасталась, и размеры её перевалили за 10 МБ, а глубокоуважаемый phpMyAdmin вместо столь желанного дампа начал выдавать пустые страницы либо ошибки. Естественно phpMyAdmin многократно мысленно проклинался, но делу это не помогло. Тогда начались поиски альтернативного софта, но ничего достойного внимания найдено не было.

Что делать? Пришлось заняться созданием своей утилиты для резервного копирования и восстановления базы данных MySQL. А далее дело техники…

Через некоторое время утилита была готова, и оставалось только обкатать её. В течение нескольких месяцев эксплуатации дампер отлично проявил себя, в нем были устранены некоторые ошибки и увеличено быстродействие. Спустя некоторое время было принято решение сделать эту полезную утилиту общедоступной.