php ve c ile paylaşımlı bellek kullanarak?

2 Cevap php

Eğer pencerelerde PHP ve C programı arasında iletişim kurmak için paylaşılan bellek kullanabilir miyim?

C program, her zaman çalışır ve bellek eşlenen dosyaları yani kullanır:

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

PHP için ben sadece c program tarafından oluşturulan bellek haritalı dosyayı açmak için aşağıdaki kodu kullanabilirsiniz?

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

veya c hafıza dosyaları ve php paylaşılan bellek farklı şeyler eşleştirilir?

2 Cevap

PHP shmop fonksiyonları windows altında kullanılabilir olması için görünmüyor yatan POSIX functions sadece korumalar vardır.

Kimden PHP manual:

Note: Versions of Windows previous to Windows 2000 do not support shared memory. Under Windows, Shmop will only work when PHP is running as a web server module, such as Apache or IIS (CLI and CGI will not work).

Appearently PHP apache içinde bu davranışını taklit, ancak tek başına ikili mevcut değildir çünkü pek pencere eşdeğerleri ile entegre olacak.

Ben PHP oluşturulan ve bir Windows uygulaması tarafından yazılmıştır paylaşılan bellek erişmek için izin istedim. Ben kendi php uzantısı (php_gsect.dll denir) oluşturarak bu elde. Bu ne istediğinizi olmayabilir ama benim php_gsect ben o işleyebilirsiniz bayt bir dizi küresel bölümüne takılır ve okur (veya yazar).

Bilginize: Benim pencere uygulaması başka sisteminden dinamik trend veri retreiving ve adlandırılmış küresel bölüme veri koyuyor. Php web sayfası küresel bölümünden veri erişim ve (esj grafik kütüphanesini kullanarak) bir grafik yaratıyor.