ads

"Делай что можешь с тем, что имеешь, там, где ты есть". Теодор Рузвельт

вторник, 1 октября 2013 г.

Настройка проектов для разработки плагинов 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

Комментариев нет :

Отправить комментарий