SPDY — модная нынче замена протоколу HTTP от Google. Не просто костыль от “корпорации добра”,
а поддерживаемый браузерами стандарт и кандидат на включение в HTTP/2.0
Фичи: во-первых, цель — чтобы все ресурсы страницы были отданы за 1 соединение (очень заметно,
если на странице подключается много мелких файлов), во-вторых, простота настройки.
всё, у вас SPDY. В nginx тоже должно быть просто, но у меня Apache
Недостатки (а как же без них):
Работает только через SSL (пока)
несовместим с Apache mod_php
Тут в принципе всё решаемо. PHP перенастраивается на работу с FastCGI — и лучше сделать так как можно скорее,
т.к. от mod_php много и других проблем, таких как чушь с правами на файлы и требование неоптимальной версии апача —
Apache MPM Prefork
С SSL чуть хитрее — многие помнят (а у многих и до сих пор крутится соответствующая древность на серваках)
те несладкие времена, когда для поднятия сервака на https:// требовалось каждому хосту раздать по IP-шнику.
Так вот, эти времена прошли и можно без нервов сделать веб чуть безопаснее
Надо убедиться что
ваш OpenSSL версии 0.9.8k и старше (и TLS в нем не выключен)
апача собрана с этой версией OpenSSL
установлен mod_ssl
Для CentOS 6 (не 5!) всё собрано соответственно, так что надо просто установить
Всё! У вас сервак с поддержкой SNI, которая позволяет обходить ограничения старых версий SSL
Рекомендуется еще в конфиг Apache добавть такую строку: SSLStrictSNIVHostCheck (on|off)
on закроет доступ старым браузерам, не умеющим работать с SNI (премногоуважаемый всеми IE6, Firefox младше 2.0,
Safari младше 3.2.1, Opera младше 8.0, Google Chrome такое с рождения умел), off позволит им заходить,
тем не менее, устрашая “неверными” сертификатами. Я подумал чутка и поставил on. Ибо нефиг
Написал свою версию плагина для Libravatar — Libravatar Replace. Точнее, пришлось форкнуть оригинал,
т.к. автор упорно молчал на мои попытки связаться. Сначала я добавил все дефолты Либраватара в список,
а потом понеслось
Фичи:
Плагин полностью заменяет Gravatar на Libravatar в WordPress, включая всё default images
(лого только меняется соответствующе)
Services_Libravatar содержит мой патч, исправляющий работу с портами в SRV
Попытался сделать поддержку BuddyPress (там свой алгоритм генерации изображний-аватаров,
причем писец какой запутанный) — вроде работает
Очень интересный и полезный момент сегодня всплыл в комментариях на Хабре. В PHP 5.5, как известно,
сделали поддержку функций-генераторов, по типу питоновских. Там раньше были итераторы, но с адовым синтаксисом
(как всё в SPL), а теперь ввели оператор ‘yield’ и всё волшебным образом упростилось.
Например, можно написать такой генератор, читающий построчно файл:
‘yield’ означает «вернуть значение и продолжить с этого места при следующем вызове функции».
Имея такой генератор, можно сделать вот такую печать файла:
Удобно? Очень удобно. Оператор ‘yield’ выдаст все строки файла, а потом, когда файл закончится,
произойдёт обычный ‘return’ из функции, который закроет генератор (и закончит цикл).
Но как известно, если всё идёт хорошо, значит, вы чего-то не заметили. Немного изменим наш цикл:
Предположим, нас интересуют только первые шесть строк файла, а дальше мы хотим прервать цикл
оператором ‘break’. Имеем на то полное право. Но что в этом случае произойдёт внутри генератора?
А ничего. Он останется стоять на последнем исполненном yield-е и никогда не дойдёт до строки ‘fclose($f)’.
И наш файл останется незакрытым.
Мы получили утечку ресурса (открытого файла). Понятно, что внутри генератора могут быть открыты
любые ресурсы и объекты, и их необходимо правильно и предсказуемо закрывать. Но как это сделать,
если юзер может в любой момент сделать break? Обычная документация
(http://www.php.net/manual/en/language.generators.overview.php) никаких намёков не даёт.
Так вот, оказывается (и за это спасибо юзеру weirdan с Хабра: https://habr.com/ru/post/189796/#comment_6594776),
что читать в этом случае надо не документацию, а RFC по генераторам:
https://wiki.php.net/rfc/generators#closing_a_generator. А в нём сказано, что при освобождении ссылки на генератор,
у него внутри обязаны выполниться все блоки ‘finally’. И тогда мы получаем очень простой, красивый и безопасный код:
В этом случае блок ‘finally’ выполнится и при нормальном выходе из цикла по генератору и при выходе по break-у. Ура.
Так что если вы пишете на PHP — имейте это в виду. Потому что, кажется, больше нигде про это узнать невозможно —
ни в одной из читанных мною статей по генераторам не было ни слова об утечке ресурсов.