Хотя на улице уже и начались такие теплые деньки, что все стараются пойти на местный пляж, мы продолжаем работать.
Сегодня хотелось бы представить результат работы за последние две недели: новую версию IWE под номером 3.6. Я думаю, кто-то да заметил, что вчера наш сайт работал нестабильно. Это было связано как раз таки со внедрением новой версии скрипта. Скрипт и раньше мог работать сразу с целым списком доменов, однако в предыдущей версии была предусмотрена лишь работа всех этих доменов на одном сервере. Да и к тому же была одна недоработка ― для всех зеркал использовался один файл robots.txt, благодаря чему только Яндекс распознавал главное зеркало и дополнительные, Google же признавал каждое зеркало за автономный сайт. Сначала мы хотели написать скрипт, подставляющий нужные записи в robots.txt в зависимости от домена, но позже пришли к выводу, что такой номер пройдет не на всех хостингах, что сразу делает его ненадежным способом. Чуть позже мы решили сделать вообще по другому ― разнести сайты на разные сервера, на разные хостинги. Теперь это стали действительно правильные зеркала, которые работают тогда, когда падает главный сайт, но появилась другая загвоздка: на каждом из серверов были установлены полностью автономные копии дистрибутива IWE.
Неудобств здесь сразу несколько: во-первых, авторизация действует лишь в одном домене, так что для каждого нового зеркала пользователю пришлось бы заново авторизоваться; во-вторых, комментарии и контент, добавленные не на главное зеркало сайта, затирались при следующей синхронизации, так как при синхронизации на все зеркала разносятся данные с главного зеркала, а вот с дополнительных на главное ― ничего. Также стоило бы упомянуть фотографии и wishlist ― данные из базы-то синхронизируются, а вот загруженные файлы фотографий?
После этого мы решили сделать расширенную кроссдоменную версию IWE. Это все те же самостоятельные дистрибутивы на разных серверах, но уже склеенные между собой при помощи определенных записей в конфигурационном документе. SQL-сервер может быть как один, так и несколько (это смотря позволяет Ваш хостинг подключаться к удаленным серверам или нет). Когда администратор добавляет какую-то новую запись, она сначала записывается в базу данных того сервера, на котором была добавлена, а затем, в течение часа, распространяется на другие. Есть, правда, несколько исключений: комментарии и анонимные вопросы (в т.ч. и для FAQ), находящиеся на модерации, не размножаются до тех пор, пока не будут подтверждены модератором (вопросы ― до тех пор, пока не получат ответа); жалобы и сообщения (через форму обратной связи) не передаются на зеркала вообще. С файлами фотографий чуть иначе ― они передаются на другие сервера через FTP сразу же после того, как загружаются на одно из зеркал. А самое главное нововведение ― кроссдоменная авторизация. На странице авторизации появился новый пункт ― «Я уже авторизован(а)», после выбора которого нужно выбрать зеркало, на котором пользователь уже авторизовался, и подождать несколько секунд.
Пока что Вы еще можете ознакомиться с работой нового кроссдоменного скрипта на нашем сайте и его зеркалах, но это только до вечера. Мы пришли к выводу, что на нашем сайте в такой сложной процедуре совершенно нет необходимости, если учесть, что на все зеркала сайта в общей сложности в сутки заходит около пятидесяти посетителей. В связи с этим, сегодня вечером мы просто установим перенаправление со всех зеркальных доменов на главный сайт. Останется только днепропетровское зеркало, так как оно находится на сервере, подключение к которому для клиентов, по крайней мере, одного местного провайдера не тарифицируется.
Получился пост в стиле «Начал за здравие, а кончил за упокой».