PHP code example of aternos / rados-ffi
1. Go to this page and download the library: Download aternos/rados-ffi library . Choose the download type require .
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
aternos / rados-ffi example snippets
$rados = \Aternos\Rados\Rados::getInstance()->initialize();
\Aternos\Rados\Rados::getInstance()->preload();
$rados = \Aternos\Rados\Rados::getInstance()->initializePreloaded();
$cluster = $rados->createCluster();
$cluster->configReadFile('/etc/ceph/ceph.conf');
$cluster->connect();
var_dump($cluster->pingMonitor("mon1"));
var_dump($cluster->getClusterFsid());
foreach ($cluster->getPools() as $pool) {
echo $pool->getName() . PHP_EOL;
}
$ioContext = $pool->createIOContext();
foreach ($ioContext->createObjectIterator() as $entry) {
echo $entry->getObject()->getId() . PHP_EOL;
}
$object = $ioContext->getObject("object1");
// Write full object
$object->writeFull("Hello, World");
// Write at offset
$object->write("World", 7);
//Append to object
$object->append("!");
// Read from object
echo $object->read(13, 0) . PHP_EOL;
$completion = $object->writeFullAsync("Hello, World");
if ($completion->isComplete()) {
echo "Operation is complete" . PHP_EOL;
}
$completion->waitForComplete();
$completion->isComplete(); // true
$completion->cancel();
$result = $completion->getResult();
$result = $completion->waitAndGetResult();
$object = $ioContext->getObject("object1");
$operation = $rados->createWriteOperation();
$operation->addTask(new \Aternos\Rados\Operation\Common\Task\AssertExistsTask());
$operation->addTask(new \Aternos\Rados\Operation\Write\Task\AppendTask("Hello, World"));
$operation->operate($object);
$object = $ioContext->getObject("object1");
$object->writeFull("Hello, World");
$operation = $rados->createReadOperation();
$task = new \Aternos\Rados\Operation\Read\Task\ReadTask(0, 12);
$operation->addTask($task);
$operation->operate($object);
echo $task->getResult() . PHP_EOL;
$task = new \Aternos\Rados\Operation\Common\Task\CompareExtTask("Hello_", 0);
$task->setFlags([\Aternos\Rados\Constants\OperationTaskFlag::FailOK]);
try {
$cluster->getPool("nonexistent")->createIOContext();
} catch (\Aternos\Rados\Exception\RadosException $e) {
if ($e->is(\Aternos\Rados\Generated\Errno::ENOENT)) {
echo "Pool does not exist" . PHP_EOL;
}
}