Настройка проектов для разработки плагинов PHP

Повысить скорость выполнения скриптов, особенно с использованием циклических вычислений, можно, перенеся части кода на язык C и оформив их как плагин PHP. У PHP есть отличный API позволяющий, даже не имея особых навыков программирования на С,создавать модули. Макросы и функции для работы с массивами, строками, входными аргументами уже есть в наличии, а примеры их использования есть в документации и исходном коде.

Создадим свое расширение myextension и настроим проект в среде Visual C 9 из пакета разработки Microsoft Visual Studio 9. В VС9 можно собирать модули для php версий 5.2, 5.3, 5.4. Для версии php 5.5 нужно использовать пакет Visual Studio 2012.

Для создания каркаса проекта с в каталоге ext в папке исходных кодов php запускаем скрипт ext_skel под Linux или ext_skel_win32.php под Windows с установленым пакетом Cygwin.

./ext_skel --extname=myextension

В созданной папке myextension открываем файл myextension.dsp в среде VC9. Открываем окно свойств проекта раскрываем меню Configuration Properties.

Включаем режим отладки в настройках Linker->Debugging->General Debug Info, выбираем Yes (/DEBUG).

В настройках C/C++->General->Debug Information Format выбираем Program Database (/ZI).

Указываем скрипт запуска во вкладке Debugging как Command с ....\Debug_TS\php.exe и Command Arguments с -f myextension.php.

Ставим точку останова, запускаем режим отладки по клавише F5 и убеждается, что она работает.

myext3.png

Все. Теперь сделаем тоже самое, но для среды NetBeans IDE 7.2 под Linux. Для этого в системе должна быть установлена отладочная версия php. Для этого берем исходники с сайта php.net, например, php-5.4.9.tar.gz. Распаковываем и собираем с режимом отладки:

./configure --prefix=/usr/local/php54d/ --enable-debug
make install

После установки запускаем редактор NetBeans, создаем проект "Приложение на C/C++" и включаем в него все файлы расширениями .h и .c из каталога /ext/myextension. Открываем вкладку "Собрать" в окне свойств проекта. В подпункте "Тип конфигурации" указываем "Динамическая библиотека".

В разделе "Компилятор C" прописываем пути к инклудам php:

  • /usr/local/php54d/include/php
  • /usr/local/php54d/include/php/main
  • /usr/local/php54d/include/php/Zend
  • /usr/local/php54d/include/php/TSRM

В подпункте "Препроцессорные определения" указываем COMPILE_DL_MYEXTENSION=1.

В настройке "Компоновщик"->"Вывод" меняем имя libmyextension на php_myextension.

Теперь компилируем модуль и копируем его в каталог модулей php. По умолчанию это будет что-то типа /usr/local/php54d/lib64/extensions/debug-non-zts-20100525. После этого ставим точку останова и запускаем режим отладки. Если все настройки сделаны правильно, должно получиться.

nb0.png

egax написал 3 лет,8 месяцев назад

Сборка плагина (extension) для PHP

Краткая сводка действий для сборки плагина под PHP 5.2, 5.3, 5.4.

Сборка под Linux

PHP должен быть установлен в системе.

phpize
./configure
make
make test
make install (или скопировать вручную php_extension.so)

Сборка под Windows

Используем среду Visual Studio 2008.

Настройка php-sdk (поставляется отдельно от дистрибутива php):

setenv /x86 /xp /release
cd c:\php-sdk\
bin\phpsdk_setvars.bat
bin\phpsdk_buildtree.bat <php_src_dir>

Для PHP 5.2 также нужен win32build (ставится тоже отдельно):

set INCLUDE=c:\win32build\include

Выставляем переменные окружения Visual Studio:

c:\Program Files\Microsoft Visual Studio 9.0\VC\bin\vcvars32.bat

Собираем PHP через configure.js и nmake. В VS2008Express отсутствует компилятор сообщений mc.exe. Его можно взять из VS2010 добавив в Makefile строчку перед "MT = ...":

MC=C:\Program Files\Microsoft SDKs\Windows\v7.0A\bin\mc.exe 
MT=C:\Program Files\Microsoft SDKs\Windows\v6.0A\bin\mt.exe

Либо установить Windows SDK.

Инициализируем плагин:

  1. php.exe ext_skel_win32.php --extname=myextension --proto=myprototypefile.dat
  2. Раскомментарить ARG_ENABLE или ARG_WITH в config.w32

Собираем PHP 5.2 с плагином:

buildconf.bat
cscript /nologo configure.js --disable-zts --disable-cgi --disable-fastcgi --disable-path-info-check --disable-bcmath --disable-calendar --disable-com-dotnet --disable-ctype --disable-xmlreader --disable-zlib --disable-xmlwriter --disable-ftp --disable-filter --disable-ctype --disable-com-dotnet --enable-cli --without-xml --without-libxml --without-simplexml --disable-ipv6 --with-EXTENSION[=shared[,PATH]]
nmake

Сборка PHP 5.3 с плагином:

buildconf.bat
cscript /nologo configure.js --disable-all --enable-cli --with-EXTENSION[=shared[,PATH]]
nmake

Для компиляции через Visual Studio в настройках проекта нужно выставить флаг препроцессора _USE_32BIT_TIME_T.

egax написал 3 лет,11 месяцев назад

Войдите, чтобы оставлять сообщения.