Избранное
Linux команды
В данной статье будут команды для сервера Linux CentOS, что использую в жизни.
Поиск содержимого в файлах:
grep -r -n 'text' /path
Поиск файла:
find / -name "index.html"
Поиск файла в текущей папке:
find . -name "index.html"
Время и синхронизация, если надо:
date
ntpdate 3.centos.pool.ntp.org
Запуск Midnight Commander:
mc
Если нет, то команда для установки:
yum install mc
Утилита для скачивания файлов и сайтов:
wget -q https://URL
Пример с сайта djangoproject
wget -r -k -l 5 -p -E -nc -np https://docs.djangoproject.com/en/1.5/
-r - ходим по ссылкам (рекурсивное скачивание)
-k - преобразовываем ссылки к локальному виду
-p - скачивание ресурсов необходимых для отображения html-страницы (стили, картинки и т.д.)
-l - глубина скачивания, 0 - бесконечная вложенность ссылок
-nc - не перезаписывать существующие файлы
-np - не подниматься выше начального адреса при рекурсивной загрузке
cURL — служебная программа командной строки, позволяющая взаимодействовать с множеством различных серверов по множеству различных протоколов с синтаксисом URL:
curl -k https://URL
dig — просмотр DNS записей домена
Если не работает, то открыть файл на редактирование /etc/resolv.conf и вставить код:
search dsitelecom.com
nameserver 8.8.8.8
nameserver 8.8.4.4
Список популярных команд
man # читать руководство по всему
chmod # изменить права к файлу или папке
chown # изменить владельца и/или группу
top # выводит список работающих в системе процессов
htop # продвинутая top
ps -la # Для получения основных сведений о процессах, запущенных текущем пользователем
ps -ela # Для всех пользователей
ps -a # Базовая информация для текущего пользователя
netcat # позволяет передавать/принимать данные через TCP/UDP соединения
telnet # это сетевой протокол, который используется для соединения удаленных компьютеров в сетях TCP/IP
telnet hostname port
sudo netstat -ntulp # покажет все сервисы и прослушиваемые ими порты и ip адреса
nohup, kill
vi, mcedit # редакторы
watch
screen
df -h # Смотреть свободное место на диске
P.S. Список команд будет расширяться по мере необходимости.
Решение ошибки: Starting httpd: (98)Address already in use
При попытке запуска Apache выдает ошибку:
Starting httpd: (98)Address already in use: make_sock: could not bind to address [::]:80
(98)Address already in use: make_sock: could not bind to address 0.0.0.0:80
no listening sockets available, shutting down
При проверке ничего не выдает:
netstat -lnp | grep '0.0.0.0:80'
Решение ошибки:
killall -9 httpd
/etc/init.d/httpd start
Готово.
Советы по оптимизации PHP кода
echo работает быстрее чем print
Заключайте строки в 'одинарные кавычки', когда в ней нет переменных
Используйте sprintf вместо переменных, заключенных в двойные кавычки. Это примерно в 10 раз быстрее
Передавайте в echo несколько параметров, вместо того, чтобы использовать конкатенацию строк
echo $a, 'text', $b, 'more text'; // множественные параметры, работает быстрее
echo $a . 'text' . $b . 'text'; //конкатенация
Не используйте вычисления числа элементов массива, длины строки и т. п., для определения последней итерации цикла в самом цикле. Установите максимальное значение для цикла for перед ним
Например:
for ($x=0; $x < count($array); $x), вызывает count() при каждой итерации,
используйте $max=count($array); перед циклом.
Если довольно большой массив, то разница в производительности в 10 раз
Удаляйте свои переменные для освобождения памяти, тем более, если это большие массивы
Пример:
// так писать не стоит
$time = time();
$login = $_SESSION['login'];
$hash = md5($login . $time);
// если можно записать так
$hash = md5( $_SESSION['login'] . time() );
Избегайте магических методов, таких как __get, __set, __autoload
По возможности используйте require() вместо require_once()
Используйте полные пути в include(_once) и require(_once), уменьшая тем самым время на разрешение путей OS
Пример:
для путей лучше определить константы, используя $_SERVER['DOCUMENT_ROOT']
Определить время, когда скрипт был запущен, используйте
$_SERVER[’REQUEST_TIME’] вместо time()
Старайтесь использовать strncasecmp, strpbrk и stripos вместо регулярных выражений
str_replace быстрее, чем preg_replace, но strtr быстрее, чем str_replace
Лучше использовать конструкцию else if, чем несколько конструкцию if
Используйте модуль Apache mod_deflate
Закрывайте свои соединения с БД, когда закончите работать с ними
$row['id'] в семь раз быстрее, чем $row[id]
PHP-скрипты будут обрабатываться, как минимум, в 2-10 раз медленнее, чем статические HTML-страницы. Попробуйте использовать больше статических HTML-страниц и меньше скриптов
Ваши PHP-скрипты перекомпилируются каждый раз, если скрипты не кэшируются. Кэширование скриптов обычно увеличивает производительность на 25-100% за счёт удаления времени на компиляцию
mod_gzip — модуль Apache, который позволяет сжимать ваши данные на лету и может уменьшить объем передаваемых данных до 80%
Если в вашем коде есть функции, выполняющиеся очень долго, обдумайте их написание на C в виде расширения
PHP функции для преобразования символов и экранирование переменных
В программировании нужно учитывать, что пользователь может вводить разные знаки и их нужно корректно использовать и сохранять в БД.
Для этих целей используют преобразование символов и экранирование.
Функция экранирования переменных
<?
function quote_smart($value,$link){
// если magic_quotes_gpc включена - используем stripslashes
if (get_magic_quotes_gpc()) {
$value = stripslashes($value);
}
// экранируем
$value = mysql_real_escape_string($value,$link);
return $value;
}
?>
PHP функция htmlspecialchars — Преобразует специальные символы в HTML-сущности
Детально прочитать тут.
Пример:
<?php
$new = htmlspecialchars("<a href='test'>Test</a>", ENT_QUOTES);
echo $new; // <a href='test'>Test</a>
?>
Данная простейшая функция поможет избежать чужеродных инъекций и сделать невозможным для инжекторов взлом базы данных.
Исходный код:
<?php
function protect($var)
{
$var= mysql_real_escape_string(trim($var));
return $var;
}
?>