Хранение PHP-сессий в кэше xCache

Vladimir
Опубликовано в: PHP

Продолжение статьи «Хранение PHP-сессий в базе данных».

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

В данной статье мы рассмотрим хранение сессий PHP в кэше xCache (изменения в коде для использования APC/eAccelerator будут минимальными). Далее

19
Сен
2009

Оптимизация байт-кода в PHP

Vladimir
Опубликовано в: PHP

Я давно задавался вопросом, насколько «умным» является интерпретатор PHP в том, что касается оптимизации. В частности, меня всегда интересовала поддержка исключения неиспользуемого кода (известная как dead code elimination) и распространение константных значений (constant propagation). И теперь, когда я вплотную занялся изучением внутренностей Zend Engine, у меня такая возможность появилась. Далее

15
Сен
2009

Задача отсюда. Самый простой способ решения:

[-]
View Code Bash
convert image.gif \
    -coalesce \
    -gravity south \
    -draw 'image over 0,0 0,0 "watermark.png"' \
    result.gif"
  • image.gif — исходный рисунок;
  • watermark.png — водяные знаки;
  • result.gif — результат

Параметр gravity задаёт местоположение водяных знаков. Далее

14
Сен
2009

Оборзели

Vladimir
Опубликовано в: Фриланс

Демперы? Да, это плохо. Но хуже, когда заказчики вдохновляются их примером и жутко борзеют. Далее

9
Сен
2009

Расширения PHP и Doxygen

Vladimir
Опубликовано в: C/C++, PHP

Любимые разработчиками PHP макросы и их уровень вложенности зачастую оказываются плохо совместимыми с системой документирования исходных текстов Doxygen.

В зависимости от настроек препроцессора Doxygen (в частности, директивы SKIP_FUNCTION_MACROS) отдельные блоки кода могут быть вообще пропущены; например, в коде:

[-]
View Code C
PHP_INI_BEGIN()
    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. Далее

6
Сен
2009