- Если метод может быть статическим, сделайте его статическим.
- echo быстрее, чем print.
- Передавайте в echo несколько параметров, вместо использования конкатенацию строк.
- Устанавливайте максимальное количество повторений ваших циклов for до цикла, а не во время его выполнения.
- Удаляйте свои переменные для освобождения памяти, особенно если это большие массивы.
- Остерегайтесь волшебных методов, таких как __set, __get, __autoload.
- require_once дорого обходится.
- Указывайте полные пути в командах include/require, поиск файла будет идти быстрее.
- Если вам необходимо определить время, когда скрипт был запущен, лучше используйте $_SERVER[’REQUEST_TIME’] вместо time().
- Старайтесь применять strncasecmp, strpbrk и stripos вместо регулярных выражений.
- str_replace быстрее, чем preg_replace, но strtr быстрее, чем str_replace.
- Если функции замены строк, может принимать в качестве аргументов как массивы, так и одиночные символы, и если ваш список аргументов не слишком длинный, подумайте над тем, чтобы записать несколько одинаковых выражений замены, проходя один символ за раз, вместо одной строки кода, которая принимает массив поиска и замены
- Лучше использовать конструкции else if, чем несколько конструкций if.
- Подавление кодов ошибок при использовании @ работает очень медленно.
- Используйте модуль Apache mod_deflate.
- Прерывайте свои соединения с БД, когда закончите работать с ними.
- $row["id"] в семь раз быстрее, чем $row[id].
- Сообщения об ошибках дорого стоят
- Не используйте функции внутри условия цикла for, например как здесь: for ($x=0; $x < count($array); $x). Здесь функция count() будет вызываться при каждом проходе цикла.
- Инкремент локальной переменной в методе - самый быстрый. Почти также работает инкремент локальной переменной в функции.
- Инкремент глобальной переменной в 2 раза медленее, чем локальной.
- Инкремент свойства объекта (т.е. $this->prop++) в 3 раза медленнее, чем локальной переменной.
- Инкремент неопределённой переменной в 9-10 раз медленнее, чем заранее инициализированной.
- Объявление глобальной переменной, без использования её в функции, также замедляет работу (примерно на ту же величину, что и инкремент локальной переменной). Вероятно, PHP выполняет проверку на существование этой переменной.
- Скорость вызовов метода, не зависит от количества методов в классе. Я добавил 10 методов в тестовый класс (до и после тестового метода) и производительность не изменилась.
- Методы в производных классах работают быстрее, чем они же, определённые в базовом классе.
- Вызов функции с одним параметром и пустым телом функции в среднем равняется 7-8 инкрементам локальной переменной ($localvar++). Вызов похожего метода - примерно равен 15 инкрементам.
- Ваши строки, определённые при помощи апострофа, а не двойной кавычки, будут интерпретироваться чуть быстрее, т.к. PHP ищет переменные внутри текста в двойных кавычках. Конечно, вы можете использовать это только тогда, когда в вашей строке нет переменных.
- Строки, разделённые запятыми, выводятся быстрее, чем строки, разделённые точкой. Примечание: это работает только с функцией echo, которая может принимать несколько строк в качестве аргументов.
- PHP-скрипты будут обрабатываться, как минимум, в 2-10 раз медленнее, чем статические HTML-страницы. Попробуйте использовать больше статических HTML-страниц и меньше скриптов.
- Ваши PHP-скрипты компилируются каждый раз, если скрипты они не кэшируются. Кэширование обычно увеличивает производительность на 25-100% за счёт экономии времени на компиляцию.
- Кэшируйте, насколько это возможно. Используйте memcached — это высокопроизводительная система кэширования объектов в памяти, которая повышает скорость веб-приложений за счёт уменьшения времени загрузки БД. Кэшированный микрокод полезен тем, что позволяет вашему скрипту не перекомпилироваться заново для каждого запроса.
- При работе со строками, для определения длины строки, вы, разумеется, захотите использовать функцию strlen(). Эта функция работает очень быстро, ведь она не выполняет каких-либо вычислений, а лишь возвращает уже известную длину строки, доступную в zval-структуре (внутренняя структура C, используемая при работе с переменными в PHP). Однако потому, что strlen() — функция, она будет работать медленно за счёт вызова некоторых операций, таких как приведение строки в нижний регистр и поиска в хэш-таблице, только после которых будут выполнены основные действия функции. В некоторых случаях вы сможете ускорить свой код за счёт использования хитрости с isset(). Было: if (strlen($foo) < 5) { echo "Foo is too short"; }
Стало: if (!isset($foo{5})) { echo "Foo is too short"; }
Вызов isset() быстрее, чем strlen() потому, что isset() - не функция, а языковая конструкция. За счёт этого isset() не имеет практически никаких накладных расходов на определение длины строки.
- Инкремент или декремент переменной при помощи $i++ происходит немного медленнее, чем ++$i. Это особая специфика PHP, и не нужно таким образом модифицировать свой C и Java-код думая, что он будет работать быстрее, этого не произойдёт. ++$i будет быстрее в PHP потому, что вместо четырёх команд, как в случае с $i++, вам понадобится только три. Пост-инкремент обычно используется при создании временных переменных, которые затем увеличиваются. В то время, как пре-инкремент увеличивает значение оригинальной переменной. Это один из вариантов оптимизации PHP-кода в байт-код утилитой Zend Optimizer. Тем не менее, это хорошая идея, поскольку не все байткод-оптимизаторы оптимизируют это, также остаётся немало скриптов, работающих без оптимизации.
- Не всё должно быть написано с использованием ООП. Часто это излишне, поскольку методы и объекты занимают много памяти.
- Не определяйте каждую структуру данных в виде класса - массивы бывают намного полезнее.
- Не слишком разбивайте методы. Думайте, что вы действительно будете повторно использовать.
- Вы всегда можете разбить код на методы позже, если возникнет такая необходимость.
- Используйте сколько угодно предопределённых функций.
- Если в вашем коде есть функции, работающие очень долго, может стоит их переписать на C в виде расширения?
- Профилируйте свой код. Профилирование покажет вам, сколько времени выполняются части вашего кода.
- mod_gzip — модуль Apache, который позволяет сжимать ваши данные на лету и может существенно уменьшить объем передаваемых клиенту данных.
Ярлыки
- С++ (3)
- Стихи (1)
- тонировка (1)
- Цитаты (2)
- ALTlinux (1)
- Apache (2)
- big-endian (1)
- Blogger (1)
- books (3)
- books links (1)
- Buisness (10)
- C (1)
- C# (5)
- c++ (27)
- car (8)
- Cheat (1)
- CSS (1)
- DLL (1)
- Draw (1)
- Eclipse (2)
- Films (1)
- Firefox (4)
- Flash (1)
- GTK (2)
- GUI (1)
- Home server (1)
- Hotels (1)
- HTML (6)
- IE (1)
- Internet (2)
- Java (1)
- JavaScript (6)
- jQuery (1)
- KDE (1)
- KeeTouch (1)
- Linux (34)
- little-endian (1)
- Makefile (1)
- MFC (6)
- multi-thread (2)
- Music (1)
- ODBC (2)
- OpenBox (2)
- photo (4)
- PHP (38)
- programing (2)
- proxy (1)
- QML (37)
- Qt (41)
- QtCreator (2)
- RegExp (3)
- Shopping (12)
- shutdown (1)
- Soft (1)
- Sound Card (1)
- SQL (1)
- SQL Server (14)
- Subversion (1)
- SVN (1)
- teach (4)
- text-editor (1)
- Travels (1)
- Ubuntu (38)
- Upstart (1)
- Vi (2)
- VirtualBox (2)
- Virtualization (1)
- vkontakte.ru (1)
- Web (2)
- Web-Kit (5)
- WinAPI (7)
- Windows (4)
Показаны сообщения с ярлыком PHP. Показать все сообщения
Показаны сообщения с ярлыком PHP. Показать все сообщения
пятница, 1 апреля 2011 г.
PHP Оптимизация кода
Curl GET-запросы
- function qwe($qerpay)
- {
- $chp = curl_init("http://xxx/?$qerpay";
- curl_setopt($chp, CURLOPT_HEADER, 0);
- curl_setopt($chp, CURLOPT_RETURNTRANSFER,1);
- curl_setopt($chp, CURLOPT_SSL_VERIFYPEER,0);
- $resultp=curl_exec($chp);
- curl_close($chp);
- $pp = xml_parser_create();
- xml_parse_into_struct($pp,$resultp,$valsp,$indexp);
- xml_parser_free($pp);
- return $valsp['1']['value']; }
PHP Ограничение на размер закачиваемого файла
По умолчанию в PHP стоит ограничение на загрузку файлов не больше 2 Мб. Обычно этого хватает но бывают случаи что необходимо загрузить большие объемы и для этого потребуется увеличить лимиты на загрузку. Для этого нужно сделать небольшие изменения в /etc/php5/cli/php.ini.
Пропишите (измените, если такие уже присутствуют) вот такие строки:
Если у вас нет прав доступа к файлу php.ini попробуйте прописать эти параметры в файле .htaccess который должен находится в корне вашего сайта:
В данных примерах мы поставили ограничение на загрузку файла максимальным размером в 10Мб и отправку POST данных с максимальным размером в 12Мб.
link
Пропишите (измените, если такие уже присутствуют) вот такие строки:
1 2 | upload_max_filesize = 10Мpost_max_size = 12М |
1 2 | php_value upload_max_filesize 10Mphp_value post_max_size 12M |
link
пятница, 25 марта 2011 г.
cURL игнорирование сертификатов в https соединении
В php: curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, FALSE);
В коммандной строке: используя ключ -k/--insecure
link
четверг, 24 марта 2011 г.
PHP Вставить n символов в строку
среда, 23 марта 2011 г.
PHP. Сохранение массива в файл
$fp=fopen('tmp','w');
if($fp)
{
fwrite($fp,"\$_array=>array(\r\n");
array_to_file($res_obj,1,$fp);
fwrite($fp,")\r\n");
fclose($fp);
}
//на входе массив, количество отступов, и файловый дескриптор
function array_to_file($arr,$i,$fp)
{
//устанавливаем отступ
$tab = str_repeat("\t",$i);
foreach($arr as $key => $val)
{
if(is_array($val))
{
$tmp = "$tab'$key'=>array(\r\n";
fwrite($fp,$tmp);
array_to_file($val,++$i,$fp);
if( next($arr) === false) $com = '';
else $com = ',';
fwrite($fp,"$tab)$com\r\n");
}
else
{
if( next($arr) === false) $com = '';
else $com = ',';
fwrite($fp,"$tab'$key'=>'$val'$com\r\n");
}
}
}
такие массивы удобно использовать используя include(array_file.inc);
важно помнить что область видимости ограниченна фигурными скобками
http://it.nittis.ru/php-save-array-as-file.html
if($fp)
{
fwrite($fp,"\$_array=>array(\r\n");
array_to_file($res_obj,1,$fp);
fwrite($fp,")\r\n");
fclose($fp);
}
//на входе массив, количество отступов, и файловый дескриптор
function array_to_file($arr,$i,$fp)
{
//устанавливаем отступ
$tab = str_repeat("\t",$i);
foreach($arr as $key => $val)
{
if(is_array($val))
{
$tmp = "$tab'$key'=>array(\r\n";
fwrite($fp,$tmp);
array_to_file($val,++$i,$fp);
if( next($arr) === false) $com = '';
else $com = ',';
fwrite($fp,"$tab)$com\r\n");
}
else
{
if( next($arr) === false) $com = '';
else $com = ',';
fwrite($fp,"$tab'$key'=>'$val'$com\r\n");
}
}
}
такие массивы удобно использовать используя include(array_file.inc);
важно помнить что область видимости ограниченна фигурными скобками
http://it.nittis.ru/php-save-array-as-file.html
понедельник, 14 марта 2011 г.
PHP mkpath
function mkpath($path)
{
if(@mkdir($path) or file_exists($path)) return true;
return (mkpath(dirname($path)) and mkdir($path));
}
?>link
среда, 9 марта 2011 г.
пятница, 4 марта 2011 г.
PHP отправка файлов методом POST
С использованием библиотеки pear: HTTP_Request
link
установка:
apt-get install pear
pear install HTTP_Request
пример использования:
link
установка:
apt-get install pear
pear install HTTP_Request
пример использования:
require_once "HTTP/Request.php";
$req =& new HTTP_Request("http://upload.example.com/upload.php");$req->setBasicAuth("johndoe", "foo");$req->setMethod(HTTP_REQUEST_METHOD_POST);
$result = $req->addFile('file_upload_field', '/home/johndoe/text.pdf', 'application/pdf');
if (PEAR::isError($result)) {
echo $result->getMessage();
} else {
$response = $req->sendRequest();
if (PEAR::isError($response)) {
echo $response->getMessage();
} else {
echo $req->getResponseBody();
}
}?> среда, 2 марта 2011 г.
PHP сравнить даты
$month = 4;$day = 14;$year = 2009;
$today = mktime(0, 0, 0, date("m") , date("d"), date("Y"));$date3 = mktime(0, 0, 0, $month+3 , $day, $year);$date1 = mktime(0, 0, 0, $month+1 , $day, $year);
if($today > $date3) $color='red';
elseif($today > $date1) $color='yellow';
else $color='green';Link
PHP Удаление строки из файла
if ($id != "") {//$id номер строки которую нужно удалить
$id--;//так как нумерация начинается с 0
$file=file("file.txt");//преобразуем содержимое файла в массив
for($i=0;$i$file);$i++)//обходим массив
if($i==$id) unset($file[$i]); //удаляем требуемую строку из массива
$fp=fopen("file.txt","w");
fputs($fp,implode("",$file)); //записываем массив в файл
fclose($fp);
}
?> link
PHP получить вчерашную дату
Для этого нужно из текущей даты вычесть один день
$yest_date=time()-60*60*24;
$yest_date=date("Y-m-d",$yest_date);
link
или использовать mktime
$yest_date=time()-60*60*24;
$yest_date=date("Y-m-d",$yest_date);
link
или использовать mktime
$tomorrow = mktime(0, 0, 0, date("m") , date("d")+1, date("Y"));$lastmonth = mktime(0, 0, 0, date("m")-1, date("d"), date("Y"));$nextyear = mktime(0, 0, 0, date("m"), date("d"), date("Y")+1);link вторник, 1 марта 2011 г.
понедельник, 28 февраля 2011 г.
PHP Различие между кавычками(") и апострофом (')
1) Имена переменных, заключенных в кавычки, заменяются соответствующими значениями, а строки в апострофах интерпретируются буквально.
Пример:
$a="текст";
$x="Переменная a равна: $a";
$y='Переменная a равна: $a';
echo $x."
".$y;
В результате:
Переменная a равна: текст
Переменная a равна: $a
2) В строках, заключенных в кавычки, распознаются все служебные символы, а в апострофах только "\\".
Пример:
$a='c:\new';
$b="c:\new";
echo $a."
".$b;
В результате:
c:\new
c:
ew
В строке "c:\new" есть служебный символ перевода строки - "\n".
link
Пример:
$a="текст";
$x="Переменная a равна: $a";
$y='Переменная a равна: $a';
echo $x."
".$y;
В результате:
Переменная a равна: текст
Переменная a равна: $a
2) В строках, заключенных в кавычки, распознаются все служебные символы, а в апострофах только "\\".
Пример:
$a='c:\new';
$b="c:\new";
echo $a."
".$b;
В результате:
c:\new
c:
ew
В строке "c:\new" есть служебный символ перевода строки - "\n".
link
четверг, 24 февраля 2011 г.
Подписаться на:
Сообщения (Atom)