PHP: как вызывать стандартные библиотечные функции - PullRequest
8 голосов
/ 18 мая 2010

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

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

Ответы [ 4 ]

6 голосов
/ 18 мая 2010

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

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-функций на C.

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).

2 голосов
/ 18 мая 2010

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

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

1 голос
/ 19 мая 2010

А как насчет SWIG? http://www.swig.org/

0 голосов
/ 19 мая 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...