Установка APC Opcode Cache

Примечание: если вы используете PHP версии 5.3 и выше, рекомендуется устанавливать Zend OPcache так как он более эффективен.

Установка

Переходим на сайт и скачиваем последнюю версию APC //pecl.php.net/get/APC либо воспользуемся wget-ом, как показано ниже.

    $ wget //pecl.php.net/get/APC
    $ apt-get install build-essential libpcre3-dev
    $ tar -xvzf APC-3.1.13.tgz
    $ cd APC-3.1.13
    $ ./configure --enable-apc --enable-apc-mmap --with-php-config=/usr/bin/php-config
    $ make
    $ make test
    $ make install

Узнать больше


Установка PHP Zend OPcache

Если вы используете PHP 5.5 и выше то, возможно, Zend OPcache уже установлен. Для проверки запустим командочку php -v:

$ php -v
PHP 5.5.9-1ubuntu4.14 (cli) (built: Oct 28 2015 01:34:46)
Copyright (c) 1997-2014 The PHP Group
Zend Engine v2.5.0, Copyright (c) 1998-2014 Zend Technologies
    with Zend OPcache v7.0.3, Copyright (c) 1999-2014, by Zend Technologies

Допустим, мы используем версию PHP 5.3.10, естественно у нас нет OPcache и нам нужно его установить. Делаем как указано ниже (естественно все из под root или через sudo):

Узнать больше


Увеличить время выполнения скрипта (PHP)

Увеличить время выполнения скрипта можно четырьмя способами. Два способа при помощи PHP функций (set_time_limit(int seconds) и ini_set(string varname, string newvalue)), при помощи настроек файла php.ini или использования файла .htaccess.

set_time_limit()

Самый простой и быстрый способ использовать вначале выполнения скрипта функции void set_time_limit( int seconds ), которая меняет значение параметра max_execution_time, установленное в файле php.ini (Значение устанавливается в секундах, по умолчанию 30 секунд).
Узнать больше


Несколько ошибок с PHP версии 5.3 и выше

Замечено было 2 ошибки в плагине Ajaxfilemanager для TinyMCE при работе на хосте с PHP версии 5.3 и выше.

Первая

перестали отображаться превью залитых картинок с расширением JPG

Исправление

В файле /admin/ajaxfilemanager/inc/class.image.php

в функцию

function _isSupported($filename, $extension, $function, $write = false)

добавить код

if (PHP_VERSION_ID >= 50300 && strtolower($extension) == "jpg") $extension = "JPEG";

Получится вот так:

Узнать больше


Пару полезных вещей на PHP

Что бы не забыть, пару функций

Удалить из массива элементы с определенным значением

$arr = array(2, 3, 4, 2, 5, 2);
function delEl($arr, $del) {
   foreach($arr as $val)  { if($val !== $del) $newArr[] = $val; }
   return $newArr;
}
// Пример
$checkDelEl = delEl($arr, 2);  // Удалим все "2" из массива $arr
print_r($checkDelEl);  // Array ( [0] => 3 [1] => 4 [2] => 5 )

Выковырять ссылки изображений

preg_match_all('/<img[^>]+src=([\'"])?((?(1).+?|[^\s>]+))(?(1)\1)/',$content,$matches);
print_r($matches[2]);

Выводим результат из массива:

if ($matches[2][0]!='') {
   echo "<img src='".$matches[2][0]."' alt=''/>";
}

где:
$content — может быть спарсеный код который содержит изображения.

Узнать больше


Генератор паролей

<?php
function gen_pass($n) {
	$arr = array('q','w','e','r','t','y','u','i','o','p','a','s','d','f','g','h','j','k','l',
		'z','x','c','v','b','n','m','Q','W','E','R','T','Y','U','I','O','P','A','S','D','F',
		'G','H','J','K','L','Z','X','C','V','B','N','M',
		'1','2','3','4','5','6','7','8','9','0');
	$pass = '';
	for($i=0;$i<=$n;$i++) {
		$index = rand(0, count($arr) -1);
		$pass .= $arr[$index];
	}
	return $pass;
}
 
	echo gen_pass(5); //указываем сколько символов в пароле
?>

Получение суммы прописью

/**
 * Возвращает сумму прописью
 * @author runcore
 * @uses morph(...)
 */
function num2str($num) {
    $nul='ноль';
    $ten=array(
        array('','один','два','три','четыре','пять','шесть','семь', 'восемь','девять'),
        array('','одна','две','три','четыре','пять','шесть','семь', 'восемь','девять'),
    );
    $a20=array('десять','одиннадцать','двенадцать','тринадцать','четырнадцать' ,'пятнадцать','шестнадцать','семнадцать','восемнадцать','девятнадцать');
    $tens=array(2=>'двадцать','тридцать','сорок','пятьдесят','шестьдесят','семьдесят' ,'восемьдесят','девяносто');
    $hundred=array('','сто','двести','триста','четыреста','пятьсот','шестьсот', 'семьсот','восемьсот','девятьсот');
    $unit=array( // Units
        array('копейка' ,'копейки' ,'копеек',	 1),
        array('рубль'   ,'рубля'   ,'рублей'    ,0),
        array('тысяча'  ,'тысячи'  ,'тысяч'     ,1),
        array('миллион' ,'миллиона','миллионов' ,0),
        array('миллиард','милиарда','миллиардов',0),
    );
    //
    list($rub,$kop) = explode('.',sprintf("%015.2f", floatval($num)));
    $out = array();
    if (intval($rub)>0) {
        foreach(str_split($rub,3) as $uk=>$v) { // by 3 symbols
            if (!intval($v)) continue;
            $uk = sizeof($unit)-$uk-1; // unit key
            $gender = $unit[$uk][3];
            list($i1,$i2,$i3) = array_map('intval',str_split($v,1));
            // mega-logic
            $out[] = $hundred[$i1]; # 1xx-9xx
            if ($i2>1) $out[]= $tens[$i2].' '.$ten[$gender][$i3]; # 20-99
            else $out[]= $i2>0 ? $a20[$i3] : $ten[$gender][$i3]; # 10-19 | 1-9
            // units without rub & kop
            if ($uk>1) $out[]= morph($v,$unit[$uk][0],$unit[$uk][1],$unit[$uk][2]);
        } //foreach
    }
    else $out[] = $nul;
    $out[] = morph(intval($rub), $unit[1][0],$unit[1][1],$unit[1][2]); // rub
    $out[] = $kop.' '.morph($kop,$unit[0][0],$unit[0][1],$unit[0][2]); // kop
    return trim(preg_replace('/ {2,}/', ' ', join(' ',$out)));
}

Узнать больше


Удалить из документа все HTML-теги

<?php 
// $document на выходе должен содержать HTML-документ. 
// Необходимо удалить все HTML-теги, секции javascript, 
// пробельные символы. Также необходимо заменить некоторые 
// HTML-сущности на их эквивалент. 

$search = array ("'<script[^>]*?>.*?</script>'si",  // Вырезает javaScript 
                 "'<[\/\!]*?[^<>]*?>'si",           // Вырезает HTML-теги 
                 "'([\r\n])[\s]+'",                 // Вырезает пробельные символы 
                 "'&(quot|#34);'i",                 // Заменяет HTML-сущности 
                 "'&(amp|#38);'i", 
                 "'&(lt|#60);'i", 
                 "'&(gt|#62);'i", 
                 "'&(nbsp|#160);'i", 
                 "'&(iexcl|#161);'i", 
                 "'&(cent|#162);'i", 
                 "'&(pound|#163);'i", 
                 "'&(copy|#169);'i", 
                 "'&#(\d+);'e");                    // интерпретировать как php-код 

Узнать больше


Закругление углов у изображения

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

Плюс данного метода в том, что не нужно подготавливать 2 разных картинки и потом их «склеивать»/«смешивать», все делается на лету.

Вот код который это реализует с небольшими коментами:

<?php
/* задаем изображение над которым производим манипуляции */
$image = $_SERVER['DOCUMENT_ROOT'].$_GET['argv'];
/* считываем изображение над которым производим манипуляции */
$im = new Imagick( $image );

Узнать больше


Заглушка для ie6. Ваш браузер устарел.

С учетом стремительного роста интернет технологий старые (устаревшие) браузеры могут некорректно отображать вашу страничку. К такому браузеру относится и Internet Explorer 6, который не может предоставить все возможности, которые могут предоставить современные браузеры, а скорость его работы в несколько раз ниже!

Сервисы Google (Google Docs, Google Sites, Google Apps, Youtube), социальная сеть В Контакте так же постепенно уходят от IE6 и уже поставили необходимые заглушки с предложением пользователю перейти на более новые (современные) браузеры. С 2010 года, уже сама Microsoft активно начала рекомендовать пользователям отказаться от IE6. Бедный ослик…
Узнать больше