2010-05-18 3 views
7

동적 웹 페이지를 PHP로 시작합니다. 필자는 ANSI C로 작성된 라이브러리를 사용하여 매개 변수 및 기타 독점적 인 항목을 가져 오거나 설정합니다. 필자는 PHP 내부에서이 함수를 호출하는 래퍼를 사용하는 간단한 해결책이 있을까? 이미 존재하는 클래스/라이브러리가 있습니까? 이 작업을 직접 수행하는 가장 좋은 방법은 무엇입니까? 외부 응용 프로그램에 전화를 걸고 stdin/stdout을 사용하고 싶지 않습니다!PHP : 표준 라이브러리 함수 호출 방법

간단한 예제가 있습니까? 지금 젠드 문서를 파헤 치고 싶지는 않습니다. 단지 복잡성에 대한 느낌 만 있으면됩니다.

+0

[PHP에서 C/C++ 라이브러리 함수 호출 중] (http://stackoverflow.com/questions/2479402/calling-cc-library-function-from-php) –

답변

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 로더 (Win32 관련 api 호출)의 Linux 동등한 (.so 로더)이 없습니다.

+0

언급하는 것을 잊어 버렸습니다. 시스템은이 프로젝트를위한 Linux입니다.그러나이 libs에 대한 공유 라이브러리를 빌드하는 것이 가능해야합니다. – Andi

+0

John에게 감사합니다.이 기사를 읽는 데 시간이 좀 걸렸습니다. 확장 프로그램을 작성하는 것이 너무 복잡하지는 않습니다. – Andi

+0

@Andi Np :), 행운을 빈다! –

2

gearman은 (는) 중개자의 역할을 할 수도 있습니다.

은 Gearman을이 작업을 수행하기 위해 적합한 더 나은 다른 기계 또는 프로세스에 작업을 팜에 일반 응용 프로그램 프레임 워크를 제공합니다. 은 병렬로 작업하고 로드 프로세싱을로드하고 언어간에 함수를 호출 할 수 있습니다. 다양한 응용 프로그램에서 사용되는 일 수 있습니다. 고 가용성 웹 사이트에서 까지 데이터베이스 복제 전송 이벤트입니다. 즉, 처리가 통신하는 방식에 대한 신경 시스템은 입니다.

+0

와우 - 이것은 완전히 새로운 것입니다 나를! 가벼운 RPC 클라이언트/서버 프레임 워크처럼 보입니다. 작은 응용 프로그램에는 약간의 잔인 함이 있지만 복잡한 시스템의 경우 매우 유용 할 수 있습니다. PHP, C, C++ 등으로 작성된 여러 프로세스 간의 통신에 사용할 수 있습니까? – Andi

0

http://pear.php.net/ "inline_c"라는 확장명이 있습니다. 불행히도 나는 유지되지 않습니다. 그러나 이것이 내가 좋아할만한 종류의 물건 일 것 같습니다.