Enable Discovery debug logging for production troubleshooting
- Add DISCOVERY_LOG_LEVEL=debug - Add DISCOVERY_SHOW_PROGRESS=true - Temporary changes for debugging InitializerProcessor fixes on production
This commit is contained in:
31
src/Framework/Cache/Contracts/DriverAccessible.php
Normal file
31
src/Framework/Cache/Contracts/DriverAccessible.php
Normal file
@@ -0,0 +1,31 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace App\Framework\Cache\Contracts;
|
||||
|
||||
use App\Framework\Cache\CacheDriver;
|
||||
|
||||
/**
|
||||
* Interface for cache implementations that can provide access to their underlying driver
|
||||
*
|
||||
* This allows proper access to driver-specific features like scanning
|
||||
* without resorting to reflection APIs.
|
||||
*/
|
||||
interface DriverAccessible
|
||||
{
|
||||
/**
|
||||
* Get the underlying cache driver for direct access
|
||||
*
|
||||
* @return CacheDriver|null The driver, or null if not available
|
||||
*/
|
||||
public function getDriver(): ?CacheDriver;
|
||||
|
||||
/**
|
||||
* Check if the underlying driver supports a specific interface
|
||||
*
|
||||
* @param class-string $interface The interface to check for
|
||||
* @return bool Whether the driver implements the interface
|
||||
*/
|
||||
public function driverSupports(string $interface): bool;
|
||||
}
|
||||
51
src/Framework/Cache/Contracts/Scannable.php
Normal file
51
src/Framework/Cache/Contracts/Scannable.php
Normal file
@@ -0,0 +1,51 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace App\Framework\Cache\Contracts;
|
||||
|
||||
/**
|
||||
* Interface for cache drivers that support key scanning operations
|
||||
*
|
||||
* Not all drivers can efficiently scan keys, so this is optional.
|
||||
* Drivers that implement this interface can provide pattern-based operations.
|
||||
*/
|
||||
interface Scannable
|
||||
{
|
||||
/**
|
||||
* Scan for keys matching a pattern
|
||||
*
|
||||
* @param string $pattern Wildcard pattern (e.g., "user:*", "cache.*.data")
|
||||
* @param int $limit Maximum number of keys to return (0 = no limit)
|
||||
* @return array<string> Array of matching key strings
|
||||
*/
|
||||
public function scan(string $pattern, int $limit = 1000): array;
|
||||
|
||||
/**
|
||||
* Scan for keys with a specific prefix
|
||||
*
|
||||
* @param string $prefix Key prefix to match
|
||||
* @param int $limit Maximum number of keys to return (0 = no limit)
|
||||
* @return array<string> Array of matching key strings
|
||||
*/
|
||||
public function scanPrefix(string $prefix, int $limit = 1000): array;
|
||||
|
||||
/**
|
||||
* Get all available keys (use with caution on large datasets)
|
||||
*
|
||||
* @param int $limit Maximum number of keys to return (0 = no limit)
|
||||
* @return array<string> Array of all key strings
|
||||
*/
|
||||
public function getAllKeys(int $limit = 1000): array;
|
||||
|
||||
/**
|
||||
* Get performance characteristics of scanning for this driver
|
||||
*
|
||||
* @return array{
|
||||
* efficient: bool,
|
||||
* max_recommended_keys: int,
|
||||
* estimated_time_per_1000_keys: float
|
||||
* }
|
||||
*/
|
||||
public function getScanPerformance(): array;
|
||||
}
|
||||
Reference in New Issue
Block a user