PHP'de bir işlemden diğerine veri göndermenin en hızlı yolu hangisi? Veri sadece kısa bir dizedir. Curretly AF_UNIX soketleri ile bir çözüm geliştirdim, ancak kıyaslamalar, verileri bir işlemden diğerine geçirmek için 0.100 ms sürdüğünü gösteriyor. Acaba paylaşılan hafıza daha hızlı olabilir mi? Bununla birlikte, yeni bir veri yazılırsa, diğer sürecin paylaşılan belleği düzenli olarak kontrol etmek için nasıl kontrol edileceğine dair hiçbir fikrim yok.PHP'de En Hızlı IPC
Güncel çö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 istemci:
$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ışır, fakat sonuçlar şu şekildedir: nasıl
0.00019216537475586
9.5129013061523E-5
0.00011920928955078
0.00011801719665527
7.6055526733398E-5
Herhangi bir fikir, için Bu betiği daha hızlı hale getirmek veya daha hızlı (muhtemelen paylaşılmış bellek) bir çözüm geliştirmek için? peşin
sayesinde Jonas
Bu senin darboğazın olduğuna emin misin? Karşılaştırma ölçütünüzü söylemek zor, ancak bunu istemci ve sunucu arasında bir milisaniyenin altında yaptığınız anlaşılıyor. Belki sorunuzdaki ölçütlerinizi açıklığa kavuşturabilirsiniz. –
Posix iplerini kullanamayacağınızın açık bir nedeni var mı, yoksa ayrı işlemler kullanmalısınız. – SingleNegationElimination
Sanırım, süreçler birleştirilebileceğinden, işlerin işe yarayabileceğine, bunun nasıl yapılacağına dair bir fikriniz yok, nasıl yapılacağı hakkında hiçbir fikriniz yok :) – flyeris