PHP Hızlı IPC

0 Cevap php

Ben PHP diğer bir süreçten veri göndermek için en hızlı yolu olan, merak ediyorum? Veriler sadece kısa bir dizedir. Curretly Ben geliştirilen AF_UNIX soketli bir çözüm var, ama kriterler diğer bir süreçten verileri aktarmak için 0.100 ms aldığını göstermektedir. Paylaşımlı bellek herhangi bir hızlı olabilir eğer ben, merak ediyorum? Ancak, diğer süreç yazılı her türlü yeni veri varsa, algılamak için düzenli paylaşımlı bellek kontrol yapmak için nasıl hiçbir fikrim yok?

Şu çözüm:

$server = socket_create(AF_UNIX, SOCK_STREAM, 0);
socket_bind($server, '/tmp/mysock');
socket_listen($server);
while(true) {
  $r = $clients;
  if(socket_select($r, $w, $e, 5) > 0) {
    $client = socket_accept($server);
    $d = trim(socket_read($client, 256, PHP_NORMAL_READ));
    echo (microtime(true)-$d)."\n";
    socket_close($client);
  }
  flush();
}
socket_close($server);

Ve müşteri:

$d = microtime(true)."\n";
$socket = socket_create(AF_UNIX, SOCK_STREAM, 0);
socket_connect($socket, '/tmp/mysock');
socket_write($socket, $d, strlen($d));
socket_close($socket);

Bu çözüm ince, tamamen çalışıyor, ancak sonuç şu şekildedir:

0.00019216537475586
9.5129013061523E-5
0.00011920928955078
0.00011801719665527
7.6055526733398E-5

Herhangi bir fikir, nasıl bu komut daha hızlı yapmak için veya daha hızlı bir (muhtemelen paylaşımlı bellek) çözümü geliştirmek için?

Thanks in advance, Jonas

0 Cevap