Datastax / Cassandra完美的单脚本工作。但我需要用pcntl_fork创建许多fork。在叉cassandra不起作用。 简单的脚本
<?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();
如果作为单个脚本运行$ result内容数据。如果我在$ future-&gt; get()上创建pcntl_fork脚本冻结。如何解决?
答案 0 :(得分:0)
问题是所有子进程和父进程共享相同的底层套接字,并且php-driver没有可移植或强大的方式来处理这个问题。在您的应用程序中处理此问题的一个好方法是在fork之后连接;这是一个分叉进程的伪代码:
$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
}