feat: Add comprehensive documentation suite and reorganize project structure

- Created complete documentation in docs/ directory
- Added PROJECT_OVERVIEW.md with feature highlights and getting started guide
- Added ARCHITECTURE.md with system design and technical details
- Added SECURITY.md with comprehensive security implementation guide
- Added DEVELOPMENT.md with development workflows and best practices
- Added DEPLOYMENT.md with production deployment instructions
- Added API.md with complete REST API documentation
- Added CONTRIBUTING.md with contribution guidelines
- Added CHANGELOG.md with version history and migration notes
- Reorganized all documentation files into docs/ directory for better organization
- Updated README.md with proper documentation links and quick navigation
- Enhanced project structure with professional documentation standards
This commit is contained in:
SamiAhmed7777
2025-10-21 00:39:45 -07:00
commit 0b7e2d0a5b
6080 changed files with 1332936 additions and 0 deletions

View File

@@ -0,0 +1,67 @@
<?php
/*******************************************************************************************************************
| Software Name : EasyStream
| Software Description : High End YouTube Clone Script with Videos, Shorts, Streams, Images, Audio, Documents, Blogs
| Software Author : (c) Sami Ahmed
|*******************************************************************************************************************
|
|*******************************************************************************************************************
| This source file is subject to the EasyStream Proprietary License Agreement.
|
| By using this software, you acknowledge having read this Agreement and agree to be bound thereby.
|*******************************************************************************************************************
| Copyright (c) 2025 Sami Ahmed. All rights reserved.
|*******************************************************************************************************************/
defined('_ISVALID') or header('Location: /error');
class VBenchmark
{
private static $timers = array();
public static function start($name)
{
if (!isset(self::$timers[$name]) || !is_array(self::$timers[$name])) {
self::$timers[$name] = array(
'start' => microtime(true),
'stop' => false,
'memory_start' => function_exists('memory_get_usage') ? memory_get_usage() : 0,
'memory_stop' => false,
);
}
}
public static function stop($name)
{
if (isset(self::$timers[$name]) && self::$timers[$name]['stop'] === false) {
self::$timers[$name]['stop'] = microtime(true);
self::$timers[$name]['memory_stop'] = function_exists('memory_get_usage') ? memory_get_usage() : 0;
}
}
public static function get($name, $decimals = 4)
{
if (!isset(self::$timers[$name])) {
return false;
}
if (self::$timers[$name]['stop'] === false) {
self::stop($name);
}
return array(
'time' => number_format(self::$timers[$name]['stop'] - self::$timers[$name]['start'], $decimals),
'memory' => self::bytes(self::$timers[$name]['memory_stop'] - self::$timers[$name]['memory_start']),
);
}
public static function bytes($bytes)
{
$i = 0;
$formats = array('B', 'KB', 'MB', 'GB', 'TB', 'PB');
while ($bytes >= 1024) {
$bytes = $bytes / 1024;
++$i;
}
return number_format($bytes, ($i ? 2 : 0), ',', '.') . ' ' . $formats[$i];
}
}