PHP сниппеты


Содержание

PHP сниппеты

Добрый вечер пользователи сайта red-star.pro. В данной статье собрана небольшая подборка интересных PHP-сниппетов. Может кому нибудь они даже пригодятся.

1. Смена графики в зависимости от времени года

Функция

Использование

Только год

С начальным годом

Альтернативный вариант

Использование

3. Перебор ассоциативного массива

Простой ассоциативный массив

Массив из ассоциативных массивов

10 супер полезных PHP фрагментов кода

Здравствуйте уважаемые читатели XoZblogа! При работе с PHP, очень важно иметь «инструментарий» полезных функций и фрагментов кода, которые могут сэкономить много времени при необходимости. Сегодня я собираюсь показать Вам 10 супер полезных фрагментов кода, о которых Вы, вероятно, никогда не слышали.

Илон Маск рекомендует:  Asp справочник по @ директивам

Отправка SMS с использованием PHP TextMagic API

Если по какой-то причине, Вы должны отправлять SMS своим клиентам на телефоны, Вам обязательно надо ознакомиться с сервисом TextMagic. TextMagic обеспечивают легкий API, которые позволяют отправлять SMS на сотовые телефоны. TextMagic работает с российскими сотовыми операторами, что не мало важно, их перечь можно найти на сайте TextMagic. Услуги являются платными, в среднем 1 SMS обходится в 2рубля.

Пример кода ниже показывает, как легко можно отправить SMS на мобильный телефон с использованием TextMagic API:

// Подключаем библиотеку TextMagic
require ( ‘textmagic-sms-api-php/TextMagicAPI.php’ ) ;

// Устанавливаем свой логин и пароль в системе
$username = ‘myusername’ ;
$password = ‘mypassword’ ;
$router = new TextMagicAPI ( array (
‘username’ => $username ,
‘password’ => $password
) ) ;

// Отправляем SMS на номер ‘999-123-4567’
$result = $router -> send ( ‘Wake up!’ , array ( 9991234567 ) , true ) ;

// result: Result is: Array ( [messages] => Array ( [19896128] => 9991234567 ) [sent_text] => Wake up! [parts_count] => 1 )

Автоматическое создание пароля

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

Определение места по IP

Вот полезный фрагмент кода для определения расположения конкретного IP. Ниже функция принимает один IP в качестве параметра, и возвращает местоположение IP. Если местоположение не найдено, возвращается UNKNOWN.

function detect_city ( $ip ) <
$default = ‘UNKNOWN’ ;

if ( ! is_string ( $ip ) || strlen ( $ip ) 1 || $ip == ‘127.0.0.1’ || $ip == ‘localhost’ )
$ip = ‘8.8.8.8’ ;

$curlopt_useragent = ‘Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2) Gecko/20100115 Firefox/3.6 (.NET CLR 3.5.30729)’ ;

$url = ‘http://ipinfodb.com/ip_locator.php?ip=’ . urlencode ( $ip ) ;
$ch = curl_init ( ) ;

$curl_opt = array (
CURLOPT_FOLLOWLOCATION => 1 ,
CURLOPT_HEADER => 0 ,
CURLOPT_RETURNTRANSFER => 1 ,
CURLOPT_USERAGENT => $curlopt_useragent ,
CURLOPT_URL => $url ,
CURLOPT_TIMEOUT => 1 ,
CURLOPT_REFERER => ‘http://’ . $_SERVER [ ‘HTTP_HOST’ ] ,
) ;

curl_setopt_array ( $ch , $curl_opt ) ;

$content = curl_exec ( $ch ) ;


if ( ! is_null ( $curl_info ) ) <
$curl_info = curl_getinfo ( $ch ) ;
>

if ( preg_match ( ‘<

  • City : ([^ , $content , $regs ) ) <
    $city = $regs [ 1 ] ;
    >
    if ( preg_match ( ‘<
  • State/Province : ([^ , $content , $regs ) ) <
    $state = $regs [ 1 ] ;
    >

    Показать исходный код любой веб-страницы

    Хотите отображать исходный код любой веб-страницы, с нумерацией строк? Вот фрагмент кода, чтобы реализовать это. Просто измените URL в первой строке на нужный Вам.

    Зашифровано ли соединение (https)?

    Хороший вопрос. Этот удобный фрагмент может дать Вам ответ. Ничего сложного!

    Показать количество like у Вашей Facebook странички

    Хотите отобразить на блоге, количество пользователей, которым понравилась Ваша Facebook страничка? Это очень легко, используя следующий фрагмент:

    Получить информацию о используемой памяти

    Для того чтобы оптимизировать скрипты, Вам определенно необходимо знать, какой объем оперативной памяти они используют на сервере. Этот фрагмент кода будет проверять память, а затем покажет начальный, конечный и пикового объем использованной памяти.

    Сжатие данных с использованием gzcompress()

    При работе со строками, бывает возникает необходимость сжатия данных. Использование gzcompress () функции, строки могут быть сжаты. Для обратного действия, просто вызываем gzuncompress (), как показано ниже:

    $string =
    «Lorem ipsum dolor sit amet, consectetur
    adipiscing elit. Nunc ut elit id mi ultricies
    adipiscing. Nulla facilisi. Praesent pulvinar,
    sapien vel feugiat vestibulum, nulla dui pretium orci,
    non ultricies elit lacus quis ante. Lorem ipsum dolor
    sit amet, consectetur adipiscing elit. Aliquam
    pretium ullamcorper urna quis iaculis. Etiam ac massa
    sed turpis tempor luctus. Curabitur sed nibh eu elit
    mollis congue. Praesent ipsum diam, consectetur vitae
    ornare a, aliquam a nunc. In id magna pellentesque
    tellus posuere adipiscing. Sed non mi metus, at lacinia
    augue. Sed magna nisi, ornare in mollis in, mollis
    sed nunc. Etiam at justo in leo congue mollis.
    Nullam in neque eget metus hendrerit scelerisque
    eu non enim. Ut malesuada lacus eu nulla bibendum
    id euismod urna sodales. » ;
    // упаковываем
    $compressed = gzcompress ( $string ) ;

    echo «Original size: » . strlen ( $string ) . » \n » ;
    echo «Compressed size: » . strlen ( $compressed ) . » \n » ;
    // Распоковка
    $original = gzuncompress ( $compressed ) ;

    Whois запрос при помощи PHP

    Если Вам нужно получить информацию Whois для определенного домена, то почему не использовать PHP? Следующая функция реализует это решение, делаем доменное имя в качестве параметра, и получаем информацию Whois.

    function whois_query ( $domain ) <

    // исправляем доменное имя:
    $domain = strtolower ( trim ( $domain ) ) ;
    $domain = preg_replace ( ‘/^http:\/\//i’ , » , $domain ) ;
    $domain = preg_replace ( ‘/^www\./i’ , » , $domain ) ;
    $domain = explode ( ‘/’ , $domain ) ;
    $domain = trim ( $domain [ 0 ] ) ;

    $_domain = explode ( ‘.’ , $domain ) ;
    $lst = count ( $_domain ) — 1 ;
    $ext = $_domain [ $lst ] ;

    $servers = array (
    «biz» => «whois.neulevel.biz» ,
    «com» => «whois.internic.net» ,
    «us» => «whois.nic.us» ,
    «coop» => «whois.nic.coop» ,
    «info» => «whois.nic.info» ,
    «name» => «whois.nic.name» ,
    «net» => «whois.internic.net» ,
    «gov» => «whois.nic.gov» ,
    «edu» => «whois.internic.net» ,
    «mil» => «rs.internic.net» ,
    «int» => «whois.iana.org» ,
    «ac» => «whois.nic.ac» ,
    «ae» => «whois.uaenic.ae» ,
    «at» => «whois.ripe.net» ,
    «au» => «whois.aunic.net» ,
    «be» => «whois.dns.be» ,
    «bg» => «whois.ripe.net» ,
    «br» => «whois.registro.br» ,
    «bz» => «whois.belizenic.bz» ,
    «ca» => «whois.cira.ca» ,
    «cc» => «whois.nic.cc» ,
    «ch» => «whois.nic.ch» ,
    «cl» => «whois.nic.cl» ,
    «cn» => «whois.cnnic.net.cn» ,
    «cz» => «whois.nic.cz» ,
    «de» => «whois.nic.de» ,
    «fr» => «whois.nic.fr» ,
    «hu» => «whois.nic.hu» ,
    «ie» => «whois.domainregistry.ie» ,
    «il» => «whois.isoc.org.il» ,
    «in» => «whois.ncst.ernet.in» ,
    «ir» => «whois.nic.ir» ,
    «mc» => «whois.ripe.net» ,
    «to» => «whois.tonic.to» ,
    «tv» => «whois.tv» ,
    «ru» => «whois.ripn.net» ,
    «org» => «whois.pir.org» ,
    «aero» => «whois.information.aero» ,
    «nl» => «whois.domain-registry.nl»
    ) ;

    if ( ! isset ( $servers [ $ext ] ) ) <
    die ( ‘Error: No matching nic server found!’ ) ;
    >

    $nic_server = $servers [ $ext ] ;

    if ( $conn = fsockopen ( $nic_server , 43 ) ) <
    fputs ( $conn , $domain . » \r \n » ) ;
    while ( ! feof ( $conn ) ) <
    $output .= fgets ( $conn , 128 ) ;
    >
    fclose ( $conn ) ;
    >
    else

    Отправка отчета об ошибке PHP на Email, вместо отображения ошибки

    По умолчанию, большинство серверов настроены на отображение сообщения об ошибке в сценариях PHP. По соображениям безопасности, Вы можете получать письма с отчетами об ошибках, вместо того, чтобы они отображались посетителям. Для более тонкой настройки работы вашего сайта, простого хостинга порой бывает не достаточно. И единственным выходом для владельцев сайтов является аренда сервера с администрированием, для размещения там своего проекта. Выделенный сервер дает безграничные возможности для работы.

    An error ( $number ) occurred on line
    $line and in the file: $file .

    $headers = ‘Content-type: text/html; charset=iso-8859-1’ . » \r \n » ;

    // Кому отправляем
    error_log ( $email , 1 , ‘example@mail.ru’ , $headers ) ;

    // Применяем нашу функцию для обработки ошибок
    set_error_handler ( ‘nettuts_error_handler’ ) ;

    // Ошибка)
    echo $somevarthatdoesnotexist ;

    Все! Если возникнут вопросы или предложения пишем комментарии! До встречи )


    Чтобы оставаться в курсе свежих статей и уроков подписывайтесь на еженедельную почтовую рассылку или на новостную ленту RSS. Спасибо!

    PHP сниппеты

    Сниппеты — очень важная вещь при разработке проектов разных размеров. В данной статье будут представлены 6 сниппетов которые было бы полезно добавить в список сниппетов вашей среды разработки, или php класс.

    Настройка времени сервера

    Если ваш сервер находится в отличной от вашей часовой зоны, вы могли видеть смешные вещи которые происходят, когда вы добавляете время в MySQL базу данных, например. Вы можете исправить это путем сложения или вычитания часов, как в примере ниже.

    Создание приятного URL из строки текста

    Здесь мы вводим простую текстовую строку, переводим в нижний регистр и заменяем все пробелы на тире.

    Конвертирование HEX значения в RGB

    Если вам нужно будет получить RGB значение из шестнадцатеричного числа — эта функция для данной работы.

    Вывод Граватара пользователя

    Получение Граватара пользователя реализуется просто. Если у вас есть email адрес пользователя вам нужно перевести его в MD5 хеш и добавить к URL Граватара.

    Конвертирование ссылок в тексте в гипертекст

    Очень полезная функция которая будет конвертировать ссылку в тексте в гипертекст к любому URL адресу. Мы перебираем все URL и добавляем гипертекст.

    Разбор JSON в PHP

    Разбор строки JSON легче чем вы могли подумать, так как мы можем воспользоваться PHP функцией json_decode(), которая будет превращать JSON в PHP массив которым мы можем манипулировать, как хотим.

    PHP сниппеты

    Как найти, где находится функция php

    Как найти, где находится класс в php
    идентично верхнему коду, можно найти и местоположение любого не встроенного класса в php

    Как получить все методы у объекта или класса в php

    Как удалить папку с файлами или почистить папку с файлами

    Если нужно просто отчистить директорию то запускаем без второго параметра, если после очистки нужно еще и удалить ее то вторым параметром подаем true

    Как отдать на загрузку какой-либо файл на сервере с помощью php
    универсальный загрузчик выглядит так

    Сгенерировать строку из случайных символов
    Часто надо сгененрировать случайную строку для соли или еще для чего

    Плагин Code Snippets для вставки WordPress сниппетов и PHP кода без файла функций

    Про вставку PHP кода и специальных хаков в WordPress я уже публиковал две заметки, сегодня дополню их еще одним хорошим методом (модуль Code Snippets). При добавлении простых скриптов или вывода информации в сайдбаре можно установить специальный виджет PHP кода, для более сложных решений рекомендуется использовать файл functions.php WordPress темы. Большинство хаков для системы, которые вы найдете в интернете, реализуется именно вторым вариантом. В статье по ссылке выше я рассмотрел все нюансы по этой теме, однако новичкам может быть сложно копаться в файлах шаблона в поисках места размещения WordPress сниппетов. Для таких случаев могу посоветовать плагин Code Snippets. Кроме простоты работы, он обладает парочкой очень интересных плюсов!

    Основная функция модуля — интеграция в админку специального графического интерфейса для работы со сниппетами в вордпресс. Данный механизм аналогичен плагинам — вы можете добавлять и редактироватьразные PHP коды, а также активировать и деактивировать их. С технической точки зрения нет никакого отличия при выполнении скриптов, размещенных через плагин Code Snippets или functions.php. Однако пользователям проще и нагляднее править отдельные элементы нежели просматривать сотни строк в одном файле функций.

    Основные плюсы Code Snippets:

    • легкость вставки хаков в WordPress через графический интерфейс;
    • визуальный редактор с подсветкой синтаксиса;
    • сохранность скриптов при смене «темы» (т.к. они хранятся в базе данных);
    • возможность включать/выключать некоторые WordPress сниппеты;
    • настройка работы скриптов отдельно для бэкенда/фронтенда;
    • экспорт/импорт;

    Скачать модуль можете с официального репозитория с этой страницы либо установить его по названию Code Snippets из админки. На момент написания статьи актуальная версия плагина 2.8.0 имеет более 30 тысяч активаций и почти что максимальную оценку (4.8 из 5-ти, всего 90 голосов). Совместимость: от WP 3.6 до 4.7.

    Илон Маск рекомендует:  Функции bios int 01h пошаговое прерывание

    Давайте детально рассмотрим как вставить PHP код в WordPress сайта с помощью данного модуля. После активации в админке появится новый раздел «Snippets»

    По умолчанию открывается пункт «All Snippets», где сможете просмотреть все созданные WordPress сниппеты. В каждой строке имеется описание, метки для быстрого поиска, а при наведении появляются ссылки редактирования и активации/деактивации. Для того чтобы вставить PHP код в WordPress, кликаете по кнопке «Добавить новый» или переходите в пункт меню «Add New». После увидите соответствующую страницу:


    Здесь вводите название элемента и вставляете сам PHP код скрипта. Внимание! При этом добавлять теги открытия и закрытия не нужно! Далее по желанию указываете краткое описание и метки. В самом низу есть настройка «Область» со значениями:

    • запускать сниппет везде (админка + сам сайт);
    • во фронтенде сайта;
    • only run in administration area — только внутри системы;

    Это полезно, поскольку некоторые сниппеты в WordPress предназначены только для админки или фронтенда, и опция позволит грузить скрипты лишь там, где они не нужны. После ввода всех данных кликаете по кнопке «Сохранить» либо «Сохранить и активировать». Кстати, в настройках «Settings» доступна автоматической активации хаков + есть многие другие параметры (в том числе и по внешнему виду редактора PHP кода).

    Что касается экспорта. Сохраняются скрипты для переноса в XML формате, вы можете экспортировать элементы по одному или выделить сразу несколько (как на картинке ниже):

    Импорт производится в одноименном пункте меню. После завершения процедуры переходите в All Snippets и активируете нужные WordPress сниппеты. Больше информации по Code Snippets ищите в FAQ на официальной странице модуля.

    Напоследок один важный момент. Если в процессе работы у вас возникли проблемы с сайтом, и тот перестал грузиться, можете активировать безопасный режим плагина. Для этого добавьте следующую строку в файл wp-config.php:

    Затем деактивируйте или удалите тот вордпресс сниппет, из-за которого и случилась ошибка. Еще раз повторюсь — чтобы вставить PHP код в WordPress сайт НЕ нужно добавлять открывающие и закрывающие теги в редакторе плагина. Если в найденном в интернете примере они есть, копируйте только код между ними. Разумеется, это не касается подобных тегов, когда они используются внутри хака для выделения HTML секций.

    В целом, Code Snippets — отличный модуль! Функция импорта может сэкономить массу времени — вы просто загружаете на новый сайт всю свою подборку заранее заготовленных WordPress сниппетов, а потом активируете нужные из них. Подсветка синтаксиса + применение только для бэкенда/фронтенда — тоже весьма полезны. Рекомендую.

    Если у вас есть что добавить про Code Snippets и по теме вставки PHP кода и WordPress, пишите в комментариях.

    21 Useful PHP Snippets

    Updated on September 11, 2020 by David Adams

    Looking for a list of useful PHP snippets? Look no further, simply copy and paste these useful snippets into your projects.

    Remember to use the latest PHP version, some of these snippets may not work on older versions.

    Contents

    1. MySQL Snippets

    This snippet will connect to your MySQL database:

    Check for connection errors:

    Select database table and display all the results:

    Checking the number of rows:

    Insert a new record:

    Checking the number of affected rows:

    Escape special characters in a string, this should be used if you do not prepare your statements:

    Prepare statement, prevents SQL injection:

    Close query and close database connection:

    2. Escape HTML Entities

    This snippet will escape HTML entities and quotes:

    Decoding HTML entities:

    3. Replace Text in String

    This snippet will replace text in a string:

    And to replace multiple words in a string:

    4. Check if a String Contains a Specific Word

    This snippet will check if a string contains a specific word:


    5. Array Snippets

    Inserting new items into an array:

    Remove item from an array:

    Reindex the values after you have removed an item:

    Reverse an array:

    Merge two or more arrays:

    Return only the array keys:

    Sort an array in reverse order:

    Check if item exists in an array:

    Check if key exists in an array:

    Count the number of items in an array:

    Convert comma-separated list to array:

    6. GET and POST Requests

    Get an value from the URL parameters:

    Check if request variable exists:

    Send form data to PHP script, HTML file:

    7. Create a Password Hash

    This snippet will create a password hash:

    Verify your hashed passwords:

    8. Sessions

    This snippet will create a new session, sessions act as cookies but are stored on the server instead of the clients computer.

    Free all the session variables:

    Destroy all the session variables:

    9. Redirect URL

    This snippet will redirect to a new page:

    10. Get the Clients IP Address

    This snippet will get the IP address of the client:

    11. Get the Contents of a URL File

    This snippet will get the contents of a file using cURL:

    Using PHP file_get_contents:

    12. Determine the Date

    This snippet will get the current date in string format:

    Get the date from a timestamp:


    13. JSON

    This snippet will get an JSON file and decode it:

    Encode PHP array to JSON:

    14. Memcached

    Connect to memcached server:

    15. Send Email

    This snippet will send an email:

    16. Display the Scripts Execution Time

    This snippet will display the scripts execution time:

    17. Get the Full URL

    This snippet will get the full URL of your website (replace HTTP with HTTPS if your site is SSL):

    18. Format Numbers

    This snippet will format your number with a comma:

    Format number with decimals:

    19. Unzip a File

    This snippet will unzip a zipped file on your server:

    20. Detect Mobile Device

    This snippet will detect if the client is using a mobile device:

    21. Check if File Exists

    This snippet will check if a file exists:

    Conclusion

    These snippets are useful if you develop PHP applications regularly, or you are new and looking for a specific snippet, keep the page bookmarked for future reference.

    Share, like, and follow our social media accounts if you enjoy our articles! Happy coding!

    About Author

    David Adams

    Enthusiastic website developer, I’ve been designing and developing web applications for over 10 years, I enjoy the creativity I put into my projects and enjoy what others bring to the awesome web. My goal is to help newcomers learn the ways of the web.

    Альтернатива файлу functions.php

    Я не рекомендую добавлять пользовательский код PHP напрямую в файл functions.php. Для этих целей правильнее будет создать альтернативый файл, в который и добавлять собственные расширения.

    Это очень удобно, а главное сайт не падает, при неправильном или поврежденном коде. Все PHP сниппеты хранятся в одном месте. Плюс чистый и внятный functions.php.

    Как создать альтернативный файл functions

    Процесс создания такого файла состоит из нескольких простейших операций:

    • Создаем на компьютере файл c любым названием, например ext-functions.php . Делать это лучше в редакторе кода типа Notepad ++. Сохранять файл с расширением PHP и в кодировке UTF-8 без BOM.
    • Скопировать приведенный ниже код и вставить в созданный файл.
    • Добавить между комментариями свой сниппет. Сниппетов можно вставлять сколько нужно, будто вы добавляете код в файл functions.php . Алгоритм один в один.
    • Запаковать созданный файл в ZIP архив и загрузить как обычный плагин.
    • Активировать, как обычный плагин.


    При данном подходе ваш сайт не слетит, если в пользовательском коде будет ошибка. Плагин просто не активируется и появится сообщение об ошибке. Все PHP сниппеты хранятся в одном месте. Плюс чистый и внятный functions.php.

    Плагин Code Snippets как альтернатива файлу functions.php

    Code Snippets — это простой, чистый и простой способ добавления фрагментов кода на ваш сайт. Плагин устраняет необходимость добавления пользовательских фрагментов в файл functions.php вашей темы.

    Плюсы использования плагина Code Snippets

    Приведу лишь основные достоинства плагина.

    • Основным плюсом плагина является безопасное добавление PHP кода в WordPress.
    • Легкость добавления PHP кода в WordPress через интерфейс плагина.
    • Визуальный редактор, имеется возможность выбора множества тем, для подсветки кода.
    • Все сниппеты сохраняются в базе данных и не утрачиваются при смене темы.
    • Возможность включения и отключения отдельных сниппетов.
    • Экспорт и импорт сниппетов, причем имется возможность выбора формата файла экспорта, например в PHP файл или XML. Это очень удобно при смене или разработке тем.

    Совет по использованию плагина Code Snippets WordPress

    При использовании плагина не добавляйте конструкцию:

    Плагин автоматически расставляет скобки, если это требуется.

    Полезные сниппеты для Nginx конфигов

    Доброго времени суток, уважаемые хабравчане! В Elasticweb мы негласно ратуем за Nginx и, наверное, мы одни из немногих хостингов, которые не поддерживают Apache и .htaccess соответственно. В связи с этим, большое количество обращений в тех. поддержку связано с оказанием помощи в написании конфигурационного файла для Nginx. Поэтому мы решили собрать коллекцию полезных сниппетов и коллекцию готовых Nging конфигов для наиболее популярных CMS/CMF/Фреймворков на PHP.

    Готовые конфиги:

    Команды Nginx

    Основные команды для выполнения базовых операций во время работы Nginx.

    • nginx -V — проверить версию Nginx, его скомпилированные параметры конфигурации и установленные модули.
    • nginx -t — протестировать конфигурационный файл и проверить его расположение.
    • nginx -s reload — перезапустить конфигурационный файл без перезагрузки Nginx.

    Location блок на PHP

    Простой шаблон для быстрой и легкой установки PHP, FPM или CGI на ваш сайт.

    Rewrite и Redirection

    Force www

    Корректный способ определить удаленный сервер по домену без www и перенаправить его c www:

    Также работает для HTTPS.

    Force no-www

    Корректный способ определить удаленный сервер по домену c www и перенаправить его без www:

    Force HTTPS

    Способ для переадресации с HTTP на HTTPS:

    Force Trailing Slash

    Данная строка добавляет слэш / в конце каждого URL, только в том случаее если в URL нет точки или параметров. Тоесть после example.com/index.php или example.com/do?some=123 слэш не поставится.

    Илон Маск рекомендует:  Что такое код atan, atan2 арктангенс
    Редирект на страницу
    Редирект на сайт
    Редирект на определенный путь в URI


    Производительность

    Кэширование

    Навсегда разрешить браузерам кэшировать статические содержимое. Nginx установит оба заголовка: Expires и Cache-Control.

    Запретить кэширование браузерам (например для отслеживания запросов) можно следующим образом:

    Gzip сжатие
    Кэш файлов

    Если у вас кешируется большое количество статических файлов через Nginx, то кэширование метаданных этих файлов позволит сэкономить время задержки.

    SSL кэш

    Подключение SSL кэширования позволит возобновлять SSL сессии и сократить время к следующим обращениям к SSL/TLS протоколу.

    Поддержка Upstream

    Активация кеширования c использованием Upstream подключений:

    Мониторинг

    По умолчанию Stub Status модуль не собирается, его сборку необходимо разрешить с помощью конфигурационного параметра —with-http_stub_status_module и активировать с помощью:

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

    Более информативный статус от Nginx можно получить с помощью Luameter, который несколько сложнее в установке и требует наличия Nginx Lua модуля. Это предоставит следующие метрики по различным конфигурационным группам в формате JSON:

    • Общее количество запросов/ответов.
    • Общее количество ответов сгруппирированных по статус кодам: 1xx, 2xx, 3xx, 4xx, 5xx.
    • Общее количество байт принятых/отправленных клиенту.
    • Промежуточные отрезки времени для оценки минимума, максимума, медианы, задержек и тд.
    • Среднестатистическое количество запросов для простоты мониторинга и составления прогнозов по нагрузке.
    • И прочее…

    Также для сбора статистики отлично подходит ngxtop.

    Безопасность

    Активация базовой аунтификации

    Для начала вам потребуется создать пароль и сохранить его в обычной текстовом файле:

    Затем установить найтройки для server/location блока, который необходимо защитить:

    Открыть только локальный доступ
    Защита SSL настроек
    • Отключить SSLv3, если он включен по умолчанию. Это предотвратит POODLE SSL Attack.
    • Шифры, которые наилучшим образом обеспечат защиту. Mozilla Server Side TLS and Nginx.

    Прочее

    Подзапросы после завершения

    Бывают ситуации, когда вам необходимо передать запрос на другой бэкэнд в дополнении или после его обработки. Первый случай — отслеживать количество завершенных загрузок путем вызова API, после того как пользователь скачал файл. Второй случай -отслеживать запрос, к которому вы бы хотели вернуться как можно быстрее (возможно с пустым .gif) и сделать соответствующие записи в фоновом режиме. post_action, который позволяет вам определить подзапрос и будет отклонен по окончанию текущего запроса — является лучшим решением для обоих вариантов.

    Распределение ресурсов между источниками

    Самый простой и наиболее известный способ кросс-доменного запроса на ваш сервер:

    Источники

    Большое спасибо всем за внимание!


    Читают сейчас

    Похожие публикации

    • 19 июля 2020 в 15:57

    Раздаем файлы с Google Drive посредством nginx

    Новый билд Nemes > +11 2,6k 39 2

    Рецепты Nginx: преобразование из HTML и URL в PDF и PS

    Вакансии

    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

    Комментарии 44

    habrahabr.ru/post/99256, там показано падения производительности. Лично я использую 1. В современном мире, с терабайтами траффика и сервисом от cloudflare резонее обслуживать бОльшее число запросом, чем экономить проценты от текста в сравнении с 1й компрессией.

    Открыть только локальный доступ

    Помимо 127.0.0.1 надо указать внешний ipv4 адресс сервера и, при наличии ipv6 его внешний ipv6 и, конечно же, ::1. Иначе в случае обращения на example.com/api через тот же ssi (include virtual) будет облом.

    add_header Strict-Transport-Security max-age=2592000;

    Надо обязательно добавить инфу о том, что если у нас есть поддомены (cdn, api, etc) которые работают в режиме https, то надо указать includeSubDomains
    add_header Strict-Transport-Security «max-age=31536000; includeSubDomains»;

    Теперь минус — вы забыли про ssl_dhparam! Генерируем свой на 2048 (или если есть много времени, то на 4096)!

    Далее в вашей статье рассмотрена тема php (или любой другоу бекенд через fastcgi или proxypass), но не рассмотрена тема кеша и ключей (fastcgi_cache_key/proxy_cache_key), и в особенности таких вкусностей как fastcgi_cache_lock/proxy_cache_lock и fastcgi_cache_lock_timeout/proxy_cache_lock_timeout, и как это шикарно помогает с наплывом ботой или клиентов.

    Для начала вам потребуется создать пароль и сохранить его в обычной текстовом файле:
    имя: пароль

    Используем пароли после обработки crypt’ом.

    Завтра на свежую голову еще раз перечитаю, что не бросилось в глаза.

    Надо обязательно добавить инфу о том, что если у нас есть поддомены (cdn, api, etc) которые работают в режиме https, то надо указать includeSubDomains
    add_header Strict-Transport-Security «max-age=31536000; includeSubDomains»;

    Тут двояко. Указывать includeSubDomains стоит только если вы уверены что ВСЕ ваши поддомены работают по HTTPS.

    или если есть много времени, то на 4096

    Не стоит. Использование 4096-битного ключа, замедляет работу сервера, пусть и все же не прям существенно, но неприятно.

    От себя добавлю, у себя я про это писал, хорошо при всем прочем включать поддержку OSCP ответов, кеш сессий, и ssl_prefer_server_ciphers , т.е. что то вот в таком духе:

    хотя про кеш сессий в статье написано, чуть позже заметил :)

    Не стоит. Использование 4096-битного ключа, замедляет работу сервера, пусть и все же не прям существенно, но неприятно.

    Мое дополнение к статье, касаемо безопасности:

    В качестве оптимизации дисковой нагрузки, можно упомянуть отключение логов:

    Всем известный скрипт для gzip_static:

    Надо быть аккуратным, т.к. под это правило попадают и директории. Допустим в битриксовых проектах достаточно часто можно встретить директории .default, доступ к которым будет ограничен, при том, что на страницах есть статичные файлы находящиеся в данной директории.

    К конфигу WordPress предлагаю добавить:


    Решает очень много проблем. :-)

    Как минимум на весь wp-admin поставить auth_basic , тогда можно будет спокойно работать в админке, пройдя две авторизации (nginx и wp).
    У меня заметка параноика была, за истину не беру, есть несколько костылей (например доступ к запароленным статьям через ln к оригинальному) wp-login.

    Глобально же, в случае с любой CMS следует ввести фильтрацию аргументов, например:

    Это понизит шанс SQL инъекции или других гадостей через адресную строку. Только надо понимать, использует ли сам движок некоторые их них. Если использует — это все очень просто обыгрывается через if’ы в nginx и auth_basic (когда в конфиге два три if, первый на проверку авторизации, второй на проверку условия, а третий на проверку результата первых 2х и выдачу 403).

    Нет ничего проще:

    * ^.+\.(jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|mid|midi|wav|bmp|rtf|mov)$ <
    expires 14d;
    access_log off;
    log_not_found off;
    >
    location = /favicon.ico <
    log_not_found off;
    access_log off;
    >
    location = /robots.txt <
    allow all;
    log_not_found off;
    access_log off;
    >
    location

    * /upload/.*\.php$ <
    return 403;
    error_page 403 /403_error.html;
    >
    location

    (/\.ht|/bitrix/modules|/upload/support/not_image) <
    deny all;
    access_log off;
    log_not_found off;
    >
    location / <
    charset $cs;
    try_files $uri $uri/ cms;
    open_file_cache max=1024 inactive=600s;
    open_file_cache_valid 2000s;
    open_file_cache_min_uses 1;
    open_file_cache_errors off;
    index index.php index.html index.htm;
    >

    \.php$ <
    try_files $uri cms;
    charset $cs;
    fastcgi_pass $fastcgipass;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include /etc/nginx/fastcgi_params;
    >
    location cms <
    charset $cs;
    fastcgi_pass $fastcgipass;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME $document_root/bitrix/urlrewrite.php;
    fastcgi_param SCRIPT_NAME /bitrix/urlrewrite.php;
    fastcgi_param QUERY_STRING REQUEST_URI=$uri&$args;
    include /etc/nginx/fastcgi_params;
    >

    server <
    listen XXX.XXX.XX.XX:80;
    server_name domain.ru;
    root /var/www/domain.ru/web;
    index index.php index.html index.htm index.cgi index.pl index.xhtml;
    error_log /var/log/httpd/domain.ru/error.log;
    access_log /var/log/httpd/domain.ru/access.log main;
    set $fastcgipass 127.0.0.1:9016;
    set $cs utf-8;
    include /etc/nginx/common/location_bitrix.conf;
    include /etc/nginx/common/bitrix.conf;
    >

    Все работает на нескольких десятках сайтов и довольно быстро.

    Подборка полезных сниппетов для веб-мастера

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

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

    1. Загрузка файла:

    Часто такие файлы, как mp3, открываются в различных плеерах в самих веб браузерах. Но если вам надо дать файл на скачку, то нет проблем: используйте следующий код.

    Code Snippets — простой и понятный способ запуска сниппетов PHP на вашем сайте

    Данный плагин устраняет необходимость добавления пользовательских сниппетов в файл functions.php вашей темы.

    Описание

    Сниппет — это небольшой фрагмент кода PHP, который вы можете использовать для расширения функциональности веб-сайта на WordPress. По сути, мини-плагин с меньшей нагрузкой на сайт.

    Если у вас еще есть проблемы с написанием кода, то в любой момент можно пройти курс по PHP на WebShake.RU

    Большинство сайтов, где размещается сниппет, предлагают вам добавить фрагмент кода в файл functions.php вашей активной темы, который через некоторое время может стать довольно длинным.

    Code Snippets предоставляет аналогичный меню плагинов графический интерфейс для управления снипеттами. Они могут быть активированы и деактивированы как плагины.

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

    Сниппеты можно экспортировать для передачи либо в JSON для последующего импорта с помощью плагина Code Snippets, либо в PHP для создания собственного плагина или темы.

    Как я могу вставить свой сниппет в текстовый редактор сообщения?

    Сниппеты, которые вы добавляете в этот плагин, не предназначены для вставки в текстовый редактор. Вместо этого они запускаются на вашем сайте так же, как если бы они были добавлены в ваш файл functions.php.

    Может ли плагин быть полностью удален?

    Если вы включите параметр «Полная деинсталляция» на странице настроек плагина, сниппеты будут очищать все свои данные при удалении через меню «Плагины» WordPress.

    Могу ли я скопировать созданные мной фрагменты на другой сайт WordPress?

    Да! Вы можете по отдельности экспортировать отдельный сниппет, используя ссылку под его именем на странице «Управление снипетами» или массовый экспорт нескольких сниппетов с помощью функции «Массовые действия».

    Могу ли я экспортировать мои фрагменты в PHP для сайта, где я не использую плагин Code Snippets?

    Да. Установите флажки рядом со сниппетами, которые хотите экспортировать, а затем выберите «Экспорт в PHP» в меню «Массовые действия» и нажмите «Применить». Созданный файл PHP будет содержать код экспортированных фрагментов, а также их имя и описание в комментариях.

    Где фрагменты хранятся в моей базе данных WordPress?

    Фрагменты хранятся в таблице wp_snippets в базе данных WordPress. Имя таблицы может отличаться в зависимости от того, какой префикс таблицы установлен.

  • Понравилась статья? Поделиться с друзьями:
    Кодинг, CSS и SQL