2009-03-25 5 views
3

공유 메모리를 사용하여 Windows에서 PHP 스크립트와 C 프로그램간에 통신 할 수 있습니까? 난 그냥 C 프로그램에 의해 생성 된 메모리 매핑 된 파일을 열려면 다음 코드를 사용할 수있는 PHP 스크립트를PHP와 공유 메모리를 사용하고 있습니까?

handle1 = CreateFileMapping(
(HANDLE)0xFFFFFFFF, NULL, PAGE_READWRITE, 0, sizeof(byte)*BUFFER_SIZE, "my_foo"); 

hView = (LPINT) MapViewOfFile(handle1, FILE_MAP_ALL_ACCESS, 0, 0, 0); 

:

C 프로그램은 파일, 즉 매핑 된 모든 시간을 실행하고 메모리를 사용?

$shmkey = @shmop_open(ftok("my_foo", 'R'), "a", 0644, $buffer_size); 

또는 C 메모리 매핑 파일과 PHP 공유 메모리가 다른 것들이 있습니까?

답변

3

PHP shmop 함수는 기본 POSIX functions에 대한 래퍼이며 Windows에서는 사용할 수없는 것 같습니다. PHP manual에서

:

참고 : Windows 2000 이전의 Windows 버전이 아닌 지원 공유 메모리를 않습니다. Windows에서 Shmop은 PHP가 인 웹 서버 모듈 (예 : )을 Apache 또는 IIS (CLI 및 CGI는 이 작동하지 않음)로 실행하는 경우에만 작동합니다.

명백하게 PHP는 아파치에서이 동작을 에뮬레이션하지만 독립형 이진 파일에서는 사용할 수 없으므로 Windows와 동일한 기능을 수행하지 않습니다.

0

PHP가 Windows 응용 프로그램에서 작성하고 작성한 공유 메모리에 액세스 할 수있게하고 싶습니다. 필자는 php_gsect.dll이라는 자체 PHP 확장을 생성하여이 작업을 수행했습니다. 이것은 원하는 것이 아니지만 php_gsect가 전역 섹션에 연결되어 조작 할 수있는 바이트 수를 읽거나 씁니다.

FYI : 내 Windows 응용 프로그램이 다른 시스템에서 동적 경향 데이터를 검색하고 이름이 지정된 글로벌 섹션에 데이터를 저장하는 중입니다. PHP 웹 페이지는 글로벌 섹션의 데이터에 액세스하고 차트를 만듭니다 (ESJ 차트 라이브러리 사용).