value)) { print( '_CLITOR_IS_ not found for this namespace' . PHP_EOL ); exit; } // Validate protocol if (empty($clitoris->value)) { print( '_CLITOR_IS_ not found' . PHP_EOL ); exit; } // Split content to smaller parts (according to the protocol limits) $pieces = str_split( base64_encode( file_get_contents( $argv[3] ) ), 3072 ); // Count total pieces $total = count( $pieces ); // Begin pieces saving foreach ($pieces as $key => $value) { // Check piece stored in blockchain is valid $piece = _exec( $argv[1], sprintf( "keva_get %s %d", $argv[2], $key ) ); // Piece value not found if (empty($piece->value)) { printf( 'Piece %s/%s value not found, create new record...' . PHP_EOL, $key + 1, $total ); } // Piece value invalid, begin blockchain record else if ($piece->value != $value) { printf( 'Piece %s/%s value invalid, overwrite record...' . PHP_EOL, $key + 1, $total, ); } // Piece valid else { printf( 'Piece %s/%s - OK' . PHP_EOL, $key + 1, $total ); continue; // skip next operations for this piece } // Record new piece print_r( _exec( $argv[1], sprintf( "keva_put %s %d %s", $argv[2], $key, $value ) ) ); // Apply delays to prevent too-long-mempool-chain reject $delay = isset($argv[3]) && $argv[3] > 0 ? (int) $argv[3] : 60; printf( 'Piece %s/%s sent, waiting %s seconds...' . PHP_EOL, $key + 1, $total, $delay ); sleep( $delay ); } // Done printf( 'data successfully synced with namespace "%s"' . PHP_EOL, $argv[2] );