小编fly*_*ris的帖子

PHP中最快的IPC

我想知道,这是在PHP中将数据从一个进程发送到另一个进程的最快方法吗?数据只是一个短字符串.Curretly我有一个开发了AF_UNIX套接字的解决方案,但基准测试显示将数据从一个进程传递到另一个进程需要0.100毫秒.我想知道,如果共享内存可以更快吗?但是,我不知道,如果有任何新的数据写入,如何让其他进程定期检查共享内存来检测?

当前解决方案

$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);
Run Code Online (Sandbox Code Playgroud)

和客户:

$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);
Run Code Online (Sandbox Code Playgroud)

这个解决方案完全正常,很好,但结果是这样的:

0.00019216537475586
9.5129013061523E-5
0.00011920928955078
0.00011801719665527
7.6055526733398E-5
Run Code Online (Sandbox Code Playgroud)

任何想法,如何使这个脚本更快或开发更快(可能是共享内存)的解决方案?

在此先感谢,乔纳斯

php sockets ipc stream shared-memory

6
推荐指数
1
解决办法
4032
查看次数

MySQL SELECT WHERE'a'IN(`field`)

我知道拥有这样的MySQL表结构不是适当的技术,但是我必须使用这种结构。问题是,表中的字段的值带有逗号分隔的整数,例如“ 1,3,5,7,10”,我希望查询返回行,其中field对查询传递的数字中有一个,例如:

SELECT * FROM `table` WHERE '5' IN (`field_in_table`)
Run Code Online (Sandbox Code Playgroud)

但是,如果在这种情况下'5'不是该字段中的第一个数字,则它不起作用。任何建议,如何解决?

预先感谢,问候,乔纳斯

mysql select where

1
推荐指数
1
解决办法
1816
查看次数

标签 统计

ipc ×1

mysql ×1

php ×1

select ×1

shared-memory ×1

sockets ×1

stream ×1

where ×1