小编Div*_*ivi的帖子

ReactPHP真的是异步的吗?

我一直在对ReactPHP进行一些测试,因为它看起来非常棒.对于简单的套接字服务器,我使用以下react/socket代码对其进行了测试.

$loop = React\EventLoop\Factory::create();

$socket = new React\Socket\Server($loop);
$socket->on('connection', function ($conn) {
    echo 'New client !';

    $conn->on('data', function ($data) use ($conn) {
        $conn->write("Wow, some data, such cool\n");
        $conn->close();
    });
});
$socket->listen(1337);

$loop->run();
Run Code Online (Sandbox Code Playgroud)

直到这一点,没有问题.服务器显示New client !何时连接客户端并且客户端收到响应.

但我做了一个新的测试,对data事件进行了更多的处理.为了说明我的话,我将添加一个for需要几毫秒才能完成的循环:

$conn->on('data', function ($data) use ($conn) {
    $conn->write("Wow, some data, such cool\n");

    for ($i=0; $i<10000000; $i++); // here

    $conn->close();
});
Run Code Online (Sandbox Code Playgroud)

在这种情况下,有10个客户端,客户端将Wow, some data, such cool在所有客户端处理后显示文本(所以~2秒),但服务器将显示New client !而不等待.

所以在这里我缺乏理解,ReactPHP是一个异步I/O,但PHP是单线程的,如果输入和输出之间有很多处理,那将阻止所有客户端.

php sockets asynchronous reactphp

32
推荐指数
1
解决办法
2万
查看次数

Cassandra表同步

我刚刚阅读了DataStax文章" Cassandra数据建模的基本规则 ",总而言之,我们应该通过查询而不是我们的关系/对象来建模我们的数据库模式.因此,许多表可以具有相同的重复数据,例如users_by_email,users_by_username它们都具有相同的数据.

我该如何处理对象更新?
例如,用户编辑他的电子邮件,UPDATE手动操作两个表或仅INSERT包含所有列的对象,而不关心以前的数据(它们仍在我的数据库中,但列值错误=>电子邮件).

如果是UPDATE,我该如何处理数据同步?
目前,我手动完成,但有工具可以帮助我吗?因为,我可能有5或6个表具有不同的分区/群集键.
我听说Hadoop可以做到,或者Apache Spark.

cassandra nosql datastax

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

标签 统计

asynchronous ×1

cassandra ×1

datastax ×1

nosql ×1

php ×1

reactphp ×1

sockets ×1