PHP: Как Вызвать Стандартные Библиотечные Функции


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

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

Author: Benjamin, 2010-05-18

4 answers

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

Документы PHP COM: 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 в С.

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

Edit:
http://abhinavsingh.com/blog/2008/12/php-extensions-how-and-why/

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

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

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

 6
Author: John Himmelman, 2010-05-18 19:42:52

Вы также могли бы использовать gearman в качестве посредника.

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

 2
Author: Corey Ballou, 2010-05-18 18:58:39

Что насчет ГЛОТКА? http://www.swig.org/

 1
Author: Andi, 2010-05-18 20:12:07

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

 0
Author: Andi, 2010-05-18 20:03:09