dongsibao8977 2017-03-06 14:11
浏览 82

Datastax / Cassandra模块php不能与pcntl_fork一起使用

Datastax/Cassandra perfect work in single script. But I need create many fork with pcntl_fork. And in fork cassandra don't work. simple script

    <?php
$cluster   = Cassandra::cluster()                 // connects to localhost by default
                 ->build();
$keyspace  = 'system';
$session   = $cluster->connect($keyspace);        // create session, optionally scoped to a keyspace
$statement = new Cassandra\SimpleStatement(       // also supports prepared and batch statements
    'SELECT keyspace_name, columnfamily_name FROM schema_columnfamilies'
);
$future    = $session->executeAsync($statement);  // fully asynchronous and easy parallel execution
$result    = $future->get();

If run as single script $result content data. If I create pcntl_fork script freezes on $future->get(). How fix?

  • 写回答

1条回答 默认 最新

  • duandeng7132 2017-03-06 16:41
    关注

    The problem is all the children and the parent processes share the same underlying sockets and there isn't a portable or robust way for the php-driver to handle this. A good way to handle this in your application is to connect after the fork; here is some psuedo code for a single forked process:

    $cluster = Cassandra::cluster()->build();
    
    // Perform fork
    
    if ($pid) { // Parent process
        $session = $cluster->connect($keyspace);
    
        // Do parent stuff
    } else { // Child process
        $session = $cluster->connect($keyspace);
    
        // Do child stuff
    }
    
    评论

报告相同问题?

悬赏问题

  • ¥15 在获取boss直聘的聊天的时候只能获取到前40条聊天数据
  • ¥20 关于URL获取的参数,无法执行二选一查询
  • ¥15 液位控制,当液位超过高限时常开触点59闭合,直到液位低于低限时,断开
  • ¥15 marlin编译错误,如何解决?
  • ¥15 有偿四位数,节约算法和扫描算法
  • ¥15 VUE项目怎么运行,系统打不开
  • ¥50 pointpillars等目标检测算法怎么融合注意力机制
  • ¥20 Vs code Mac系统 PHP Debug调试环境配置
  • ¥60 大一项目课,微信小程序
  • ¥15 求视频摘要youtube和ovp数据集