Последовательность инициализации и сброса в расширениях PHP

Я сейчас занимаюсь написанием расширения PHP, которое меняет UID/EUID (а также GID/EGID) процесса PHP-интерпретатора на UID/GID владельца DocumentRoot сайта. При этом по замыслу расширение должно отключаться, если SAPI не используется (например, запущена CLI-версия интерпретатора).

Для этой задачи оказалось важным знать точную последовательность инициализации и финализации. Далее »

Автор: Vladimir, опубликовано в: C/C++, PHP, комментариев: нет
29
Авг
2009

GCC: освобождение ресурсов для ленивых

Одной из, скажем так, “нетрадиционных” возможностей, которые предоставляет , являются атрибуты типов, переменных и функций.

Я хочу рассказать об одном из них — а именно, отвечающем за удаление использованных ресурсов. Далее »

Автор: Vladimir, опубликовано в: C/C++, комментариев: 2
2
Июнь
2009

PHP: зависимости времени выполнения между расширениями

Так (как, кстати, рекомендует Sara Golemon) нельзя:

[-]
View Code C
#if ZEND_MODULE_API_NO >= 220050617
static zend_module_dep php_afs_depencies[] ={
    ZEND_MODULE_REQUIRED("krb5");
    {NULL,NULL,NULL}
}
#endif

Потому что даже не скомпилируется, если с ZEND_MODULE_API_NO (не) повезёт. Далее »

Автор: Vladimir, опубликовано в: C/C++, комментариев: нет
13
Май
2009

О пользе избыточной инициализации, или, В исходный код смотреть вредно

То, что данные нужно инициализировать перед использованием, знают все. Но иногда правильная инициализация — хитрая штука. Я с этим столкнулся, когда писал расширение для PHP, работающее с Voxel Hosting API.

Одна из проблем PHP — плохая документация (отсутствие таковой) по внутреннему API. А из кода не всегда всё однозначно ясно, чо временами приводит к очень милым ошибкам вида «фиг ты меня найдешь» (смягчено из соображений цензуры).

Об одной из таких особенностей я хочу рассказать. Далее »

Автор: Vladimir, опубликовано в: C/C++, комментариев: нет
7
Май
2009

Параллельная версия генерации и проверки подписи по алгоритму DSA

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

Алгоритмы, использующие «большие числа» — всегда хорошие кандидаты на распараллеливание. Дело в том, что даже при современной мощности процессоров многие задачи являются довольно сложными с вычислительной точки зрения. Хотя криптографические алгоритмы, как правило, очень тяжело поддаются распараллеливанию (например, когда значение, вычисленное на предыдущем шаге алгоритма, используется на текущем шаге), чисто математические задачи все же дают определённый простор для распараллеливания.

В данной статье рассмотрим возможность распараллеливания алгоритма . Далее »

Автор: Vladimir, опубликовано в: C/C++, OpenMP, Безопасность, комментариев: 1
3
Май
2009