Intereting Posts
Как удалить магические кавычки, если php.ini / .htaccess не редактируются? Как отправить HTML-письма с включенным CSS с помощью PHPMailer? Magento – удалите доставку и обработку при использовании Freeshipping Увеличивайте просмотр статей на ходу в пределах одной строки в CodeIgniter Проверка Laravel: обязательное условие обязательно_with_all Попытка загрузить «Hello world» с помощью JS и PHP кодировать json с помощью php? Сломанные результаты пакетного преобразования с помощью командной строки ImageMagick в Linux Запуск запроса SQL при нажатии кнопки? Zend_Navigation со скрытыми страницами Как получить титул веб-страницы с CURL в PHP с веб-сайтов разных CHARSET? Доступ к переменной с использованием счетчика как части имени переменной Что такое подготовленные на стороне клиента заявления? Как перенаправить все после слэш в домен раньше? добавить разрыв строки между двумя переменными

PHP: как вызвать стандартные функции библиотеки

Я начинаю с PHP для динамических веб-страниц. У меня есть несколько библиотек, написанных в ANSI C для получения / настройки параметров и других проприетарных материалов. Интересно, есть ли простое решение использовать оболочку внутри PHP для вызова этих функций? Есть ли уже существующий класс / библиотека? Какая была бы лучшая практика для этого? Я не хочу делать вызовы внешним приложениям и использовать stdin / stdout!

Есть ли простой пример? На данный момент я не хочу копать документацию Zend, мне нужно только чувство сложности.

Можете ли вы упаковать библиотеки в DLL? Если это так, вы можете вызвать их через COM-интерфейс PHP.

PHP COM Docs: http://us3.php.net/manual/en/book.com.php

Пример кода:

<?php $com = new COM("DynamicWrapper"); $com->Register("KERNEL32", "Beep", "i=ll", "f=s", "r=l"); $com->Beep(800, 10); 

В противном случае вы можете написать расширение, содержащее пользовательскую функцию-оболочку (т. Е. Execute_through_wrapper ('yourfunc')). Вот документ о написании php-функций в C.

http://php.net/manual/en/internals2.funcs.php

Редактировать:
http://abhinavsingh.com/blog/2008/12/php-extensions-how-and-why/

Вот краткое руководство по написанию расширений на C. Не должно быть слишком сложно написать функцию обертки. После создания расширения он может динамически загружаться через dl() (очень опасный и обесцениваемый).

http://us2.php.net/manual/en/function.dl.php

Это единственные варианты в вашем случае. Не существует эквивалента linux (.so loader) загрузчика dll (его связанного с win32 вызова api).

Вы также можете иметь посредника в качестве посредника.

Gearman предоставляет общую инфраструктуру приложений для работы с другими машинами или процессами, которые лучше подходят для работы. Он позволяет выполнять параллельную работу, обрабатывать баланс нагрузки и вызывать функции между языками. Он может использоваться в различных приложениях, с веб-сайтов высокой доступности и для транспорта событий репликации базы данных. Другими словами, именно нервная система связана с передачей распределенной обработки.

Что о SWIG? http://www.swig.org/

В http://pear.php.net/ я нашел расширение с именем «inline_c». К сожалению, я не поддерживаю. Но похоже, что это будет тот материал, который я бы предпочел.