PHP: красота кода сказывается на производительности: часть 2
ifбыстрее, чемswitch;echoбыстрее, чемprint;- явная проверка на (не)нулевое значение медленнее, чем неявная.
- константные выражения, которые могут быть вычислены на этапе компиляции, не вычисляются;
- PHP не умеет удалять неиспользуемый код на этапе компиляции.
Продолжим. Далее »
Автор: Vladimir, опубликовано в: PHP, комментариев: 4Окт
2009
PHP: красота кода сказывается на производительности
Недавно я для себя открыл, что PHP не умеет оптимизировать код, а тут новый удар: оказывается, что красота кода отрицательно влияет на производительность. Далее »
Автор: Vladimir, опубликовано в: PHP, комментариев: 11Сен
2009
Хранение PHP-сессий в кэше xCache
Продолжение статьи «Хранение PHP-сессий в базе данных».
Хотя во многих случаях хранение сессий в базе данных удобнее, чем использование стандартного механизма хранения сессий в файлах, для нагруженных сайтов может иметь смысл снять часть нагрузки с сервера баз данных за счёт переноса сессий в разделяемую память.
В данной статье мы рассмотрим хранение сессий PHP в кэше xCache (изменения в коде для использования APC/eAccelerator будут минимальными). Далее »
Автор: Vladimir, опубликовано в: PHP, комментариев: 3Сен
2009
Оптимизация байт-кода в PHP
Я давно задавался вопросом, насколько «умным» является интерпретатор PHP в том, что касается оптимизации. В частности, меня всегда интересовала поддержка исключения неиспользуемого кода (известная как dead code elimination) и распространение константных значений (constant propagation). И теперь, когда я вплотную занялся изучением внутренностей Zend Engine, у меня такая возможность появилась. Далее »
Автор: Vladimir, опубликовано в: PHP, комментариев: 2Сен
2009
Расширения PHP и Doxygen
Любимые разработчиками PHP макросы и их уровень вложенности зачастую оказываются плохо совместимыми с системой документирования исходных текстов Doxygen.
В зависимости от настроек препроцессора Doxygen (в частности, директивы SKIP_FUNCTION_MACROS) отдельные блоки кода могут быть вообще пропущены; например, в коде:
STD_PHP_INI_BOOLEAN("chuid.disable_posix_setuid_family", "1", PHP_INI_SYSTEM, OnUpdateBool, disable_setuid, zend_chuid_globals, chuid_globals)
STD_PHP_INI_BOOLEAN("chuid.never_root", "1", PHP_INI_SYSTEM, OnUpdateBool, never_root, zend_chuid_globals, chuid_globals)
STD_PHP_INI_BOOLEAN("chuid.cli_disable", "1", PHP_INI_SYSTEM, OnUpdateBool, cli_disable, zend_chuid_globals, chuid_globals)
STD_PHP_INI_BOOLEAN("chuid.be_secure", "1", PHP_INI_SYSTEM, OnUpdateBool, be_secure, zend_chuid_globals, chuid_globals)
STD_PHP_INI_ENTRY("chuid.default_uid", "65534", PHP_INI_SYSTEM, OnUpdateLong, default_uid, zend_chuid_globals, chuid_globals)
STD_PHP_INI_ENTRY("chuid.default_gid", "65534", PHP_INI_SYSTEM, OnUpdateLong, default_gid, zend_chuid_globals, chuid_globals)
STD_PHP_INI_ENTRY("chuid.global_chroot", NULL, PHP_INI_SYSTEM, OnUpdateString, global_chroot, zend_chuid_globals, chuid_globals)
PHP_INI_END()
Блок PHP_INI_BEGIN()…PHP_INI_END() может быть рассмотрен как функциональный макрос и проигнорироваться Doxygen. Либо, если директива SKIP_FUNCTION_MACROS установлена в No, распознать декларации PHP_INI_BEGIN() и ZEND_DECLARE_MODULE_GLOBALS() как функции.
У меня не получилось никаким настройками (кроме ручного задания соответствия макросов) заставить Doxygen развернуть макросы из zend_module_entry или всякие PHP_MINIT_FUNCTION. Далее »
Сен
2009
Последовательность инициализации и сброса в расширениях PHP
Я сейчас занимаюсь написанием расширения PHP, которое меняет UID/EUID (а также GID/EGID) процесса PHP-интерпретатора на UID/GID владельца DocumentRoot сайта. При этом по замыслу расширение должно отключаться, если SAPI не используется (например, запущена CLI-версия интерпретатора).
Для этой задачи оказалось важным знать точную последовательность инициализации и финализации. Далее »
Автор: Vladimir, опубликовано в: C/C++, PHP, комментариев: нетАвг
2009
oDesk Time Tracker Vulnerabilities
- oDesk Time Tracker does not verify the SSL certificate of the host it connects to thus becoming vulnerable to various Man-in-the-Middle attacks (if an attacker is able to spoof DNS for team.odesk.com — say, by setting up a fake DHCP and DNS servers in the local network — or posion the DNS cache or whatever — this is doable). Далее »
Июн
2009
WordPress 2.8 и $_REQUEST
Тем, у кого возникли проблемы с интеграцией в WordPress сторонних приложений, использующих аутентификацию по cookie: разработчики в релизе 2.8 переплюнули сами себя и добавили одну фичу: выбросили из суперглобальной переменной $_REQUEST данные из $_COOKIE. Далее »
Июн
2009
Особенности магического метода __call в PHP
Те, кто хорошо знают PHP5, наверняка знакомы или хотя бы раз использовали такой мощный инструмент, как магические методы.
Один из методов, __call(), согласно документации используется при попытке вызова недоступного метода в контексте объекта.
Иными словами, в следующем фрагменте кода
class A {
public function __call($method, $params)
{
print "Attempt to call {$method}\n";
}
}
$a = new A();
$a->someMethod();
?>
будет вызван магический метод A::__call("someMethod", array()), который напечатает
С несуществующими методами всё ясно, но в документации упоминается слово «недоступные» (inaccessible). Далее »
Автор: Vladimir, опубликовано в: PHP, комментариев: 3Июн
2009
Плагин Redirect от Nick Berlette
Сегодня по долгу работы пришлось столкнуться с плагином Redirect от Nick Berlette. Плагин выполняет перенаправление на URL, заданный в Произвольных полях записи или страницы. Сам по себе плагин простой — кода всего 10 строк. Я бы на него даже не обратил внимание, если бы CLI-скрипт не вернул фатальную ошибку. Далее »
Автор: Vladimir, опубликовано в: Плагины WordPress, комментариев: 4Май
2009

Меня зовут Владимир, я программист-фрилансер, специализирующийся на Web-программировании и програмировании под Linux.
По совместительству занимаюсь администрированием LAMP/LNMP-серверов и техническим переводом.

