PHP:如何调用标准库函数

时间:2010-05-18 18:44:27

标签: php c function call

我从PHP开始动态网页。我有一些用ANSI C编写的库来获取/设置参数和其他专有的东西。我想知道,是否有一个简单的解决方案在PHP中使用包装器来调用这个函数?是否已存在类/库?在我自己做这个的最佳做法是什么?我不想调用外部应用程序并使用stdin / stdout!

是否有简单的例子?我现在不想深入了解Zend文档,我只需要感受复杂性。

4 个答案:

答案 0 :(得分:6)

您可以将库打包到DLL中吗?如果是这样,你可以通过PHP的COM api调用它们。

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'))。这是一篇关于在C语言中编写php函数的文档。

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

这是您案件中唯一的选择。 dll加载器没有linux等价物(.so loader)(与win32相关的api调用)。

答案 1 :(得分:2)

您也可以gearman充当中间人。

  

Gearman提供了一个通用的应用程序   将工作分配给其他人的框架   机器或过程更好   适合做这项工作。它允许你   要并行工作,加载   平衡处理,并打电话   语言之间的功能。有可能   用于各种应用,   从高可用性网站到   数据库复制的传输   事件。换句话说,就是这样   神经系统如何分配   处理沟通。

答案 2 :(得分:1)

SWIG是什么? http://www.swig.org/

答案 3 :(得分:0)

http://pear.php.net/我找到了一个名为“inline_c”的扩展程序。不幸的是我没有得到维护。但看起来这将是我更喜欢的东西。