Обо мне

4X_Pro
4X_Pro
Живу в Сети с 25 ноября 2000 г.
Веду блог с 8 января 2011 г.

Контакты

Немного рекламы

Xpro.Su: заметки о жизни в Интернете

"Умное" сжатие GZIP

Администрирование, Web-программирование Оставить отзыв »

Как известно, в PHP есть возможность сжимать с помощью GZIP отдаваемые пользователю данные. С одной стороны, оно позволяет сэкономить траффик и увеличить скорость загрузки, что крайне важно для пользователей, подключенных через GPRS или обычные аналоговые модемы, так как сайты сейчас становятся по объему все больше и больше.  С другой — увеличивает нагрузку на сервер: на сжатие требуется дополнительное процессорное время. Кроме того, для пользователей с быстрыми каналами связи эффект от сжатия оказывается настолько незначительным, что время на упаковку/распаковку данных может оказаться вполне сопоставимым со временем, сэкономленным на передаче.

Сразу возникает мысль: а что если как-то определить, как подключен пользователь, и включать сжатие только в тех случаях, если соединение медленное.

Читать далее »

Сессии в PHP и нагрузка на сервер

Web-программирование Оставить отзыв »

На первый взгляд кажется, что работать с сессиями в PHP предельно просто. Достаточно написать где-нибудь в начале скрипта такой код:

session_name('MySessId'); // задаем имя cookie или параметра, в котором хранится идентификатор сессии
session_set_cookies_params(24*3600,'/','xpro.su'); //если нужно, задаем домен, путь и время хранения для cookie сессии
session_start(); // а теперь запускаем саму сессию

и в глобальной переменной $_SESSION можно будет хранить нужные значения, которые будут доступны при каждом обращении пользователя к странице! На малых сайтах такое решение работает без проблем, но оно не будет масштабируемым: как только сайт достигнет нескольких десятков тысяч страниц или посещаемости в десятки тысяч пользователей в сутки, может случиться так, что сайт будет открываться весьма и весьма медленно.

Читать далее »

Отладка PHP-скриптов

Web-программирование Оставить отзыв »

Как известно, при возникновении ошибки PHP в лучшем случае выдает номер строки, где она произошла, и ее краткое описание, а в худшем (если в настройках хостинга отключен показ ошибок вообще) — просто пустую страницу. Это не слишком удобно как для отладки, так и для конечного пользователя. Возникает вопрос: как сделать вывод сообщения об ошибке более информативным.

Оказывается, все достаточно просто. В PHP существует специальная функция set_error_handler(), которая позволяет задать свой собственный обработчик ошибок.Единственный ее параметр -- это имя функции-обработчика, которая вызывается в случае возникновения ошибки. Функция-обработчик имеет 4 параметра: номер ошибки, текст ошибки, имя файла, в котором ошибка произошла и номер строки в этом файле.

Читать далее »

Правильная выдача заголовка Content-Length

Web-программирование 2 отзывов »

Однажды, скачивая один из своих сайтов с помощью WGet, с удивлением обнаружил, что после каждой страницы программа останавливается и ждет несколько секунд. Да пользователи иногда тоже жаловались на то, что загрузка сайта очень долго не заканчивается. Стал разбираться, в чем дело, и вот что удалось выяснить.

Читать далее »

Социальная сеть будущего

Идеи и размышления 2 отзывов »

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

Читать далее »

Безопасная загрузка файлов на сервер

Web-программирование 3 отзывов »

Когда на сайте требуется разрешить пользователю загружать свои файлы (например, фото или аватары) с последующим их хранением на сервере, сразу возникает ряд проблем с безопасностью.

Первая и самая очевидная — это имена файлов. Их обязательно нужно проверять на спецсимволы, так как пользователь может подделать HTTP-запрос, в результате чего загружаемый файл будет иметь имя, например, ../index.php.  и при попытке его сохранения затрет корневой индекс. Кроме того, название может содержать русские буквы в кодировке windows-1251 или koi-8, которые некорректно сохранятся в файловой системе. Вывод: нужно сохранять файл не под тем именем, под которым его загрузил пользователь, а под случайным, например MD5-хешем от имени файла, времени загрузки и IP пользователя. Имя же этого файла где-нибудь в базе, а потом отдавать файл скритом, который предварительно будет выдавать заголовок Content-disposition: attachment; filename="имя_файла".

Читать далее »

Впечатления от Mozilla Firefox 6

Полезный софт 1 отзыв »

Сегодня, запустив Firefox, с удивлением узнал, что уже вышла шестая версия. Скачал обновление, запустил, и… понравилось настолько, что сейчас даже подумываю о том, чтобы снова начать использовать Firefox как основной броузер. (Примечание: до этого у меня стояла версия 3.5.x, поэтому не исключаю, что часть описанных ниже изменений появилась в более ранних версиях.)

Понравилось вот что:

Читать далее »

Как определить, запущен ли PHP из командной строки

Web-программирование 1 отзыв »

Иногда при написании скриптов, предназначенных для выполнения длительных операций, возникает необходимость определить, каким именно способом запущен PHP-интерпретатор: из командной строки или же из Web-сервера. Помочь в этом может функция php_sapi_name(), которая возвращает строку, описывающую SAPI (подсистему сервера), которая использовалась.

Читать далее »

Немного о юзабилити таблиц

Сайтостроительство 1 отзыв »

Часто при разработке CMS требуется вывести таблицу с какими-то элементами, которые можно выбирать и редактировать (например, список страниц сайта или список вопросов в FAQ). Казалось бы, что проще: достаточно использовать всего три тега — table, tr, td и все. Однако если список будет длинный, да еще названия элементов могут быть длинными и растягиваться на несколько строчек, то пользоваться такой таблицей будет не очень удобно. Можно дать несколько советов, как сделать такую таблицу более удобной.

Читать далее »

Есть ли польза от второго монитора

Личная эффективность 2 отзывов »

Когда зимой этого года я купил ноутбук, решил подключить к нему монитор внешений монитор в качестве вспомогательного в режиме расширения рабочего стола. Предполагалось, что это позволит быстрее выполнять ту работу, которая требует постоянного переключения между окнами (наиболее типичный пример – HTML-верстка или отладка PHP-скрипта) за счет того, что одно окно будет на одном экране, а второе – на другом.

Однако ожидания оправдались только лишь отчасти:

Читать далее »