芝麻web文件管理V1.00
编辑当前文件:/home/qrafawbu/rentandbuyrealty.com/assets/sources/aws/Aws/DynamoDb/StandardSessionConnection.php
client = $client; $this->config = $config + [ 'table_name' => 'sessions', 'hash_key' => 'id', 'session_lifetime' => (int) ini_get('session.gc_maxlifetime'), 'consistent_read' => true, 'batch_config' => [], ]; } public function read($id) { $item = []; try { // Execute a GetItem command to retrieve the item. $result = $this->client->getItem([ 'TableName' => $this->config['table_name'], 'Key' => $this->formatKey($id), 'ConsistentRead' => (bool) $this->config['consistent_read'], ]); // Get the item values $result = isset($result['Item']) ? $result['Item'] : []; foreach ($result as $key => $value) { $item[$key] = current($value); } } catch (DynamoDbException $e) { // Could not retrieve item, so return nothing. } return $item; } public function write($id, $data, $isChanged) { // Prepare the attributes $expires = time() + $this->config['session_lifetime']; $attributes = [ 'expires' => ['Value' => ['N' => (string) $expires]], 'lock' => ['Action' => 'DELETE'], ]; if ($isChanged) { if ($data != '') { $attributes['data'] = ['Value' => ['S' => $data]]; } else { $attributes['data'] = ['Action' => 'DELETE']; } } // Perform the UpdateItem command try { return (bool) $this->client->updateItem([ 'TableName' => $this->config['table_name'], 'Key' => $this->formatKey($id), 'AttributeUpdates' => $attributes, ]); } catch (DynamoDbException $e) { return $this->triggerError("Error writing session $id: {$e->getMessage()}"); } } public function delete($id) { try { return (bool) $this->client->deleteItem([ 'TableName' => $this->config['table_name'], 'Key' => $this->formatKey($id), ]); } catch (DynamoDbException $e) { return $this->triggerError("Error deleting session $id: {$e->getMessage()}"); } } public function deleteExpired() { // Create a Scan iterator for finding expired session items $scan = $this->client->getPaginator('Scan', [ 'TableName' => $this->config['table_name'], 'AttributesToGet' => [$this->config['hash_key']], 'ScanFilter' => [ 'expires' => [ 'ComparisonOperator' => 'LT', 'AttributeValueList' => [['N' => (string) time()]], ], 'lock' => [ 'ComparisonOperator' => 'NULL', ] ], ]); // Create a WriteRequestBatch for deleting the expired items $batch = new WriteRequestBatch($this->client, $this->config['batch_config']); // Perform Scan and BatchWriteItem (delete) operations as needed foreach ($scan->search('Items') as $item) { $batch->delete( [$this->config['hash_key'] => $item[$this->config['hash_key']]], $this->config['table_name'] ); } // Delete any remaining items that were not auto-flushed $batch->flush(); } /** * @param string $key * * @return array */ protected function formatKey($key) { return [$this->config['hash_key'] => ['S' => $key]]; } /** * @param string $error * * @return bool */ protected function triggerError($error) { trigger_error($error, E_USER_WARNING); return false; } }