Skip to content

Commit

Permalink
PHPCS cleared.
Browse files Browse the repository at this point in the history
  • Loading branch information
cmatosbc committed Dec 5, 2024
1 parent 9ec61f8 commit 87cc7cb
Show file tree
Hide file tree
Showing 4 changed files with 16 additions and 14 deletions.
1 change: 1 addition & 0 deletions .phpcs-cache
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"config":{"phpVersion":80226,"phpExtensions":"c57190a643219fd442e12f2c5033a98b","tabWidth":4,"encoding":"utf-8","recordErrors":true,"annotations":true,"configData":[],"codeHash":"34c672b1930e0760c14766ee1e79c81f","rulesetHash":"670f8348153700c3a70fc6127ca0e484"},"\/home\/carlos\/Projects\/circuit\/src\/Enum\/CircuitState.php":{"hash":"041615ee99cc6554a0c16e0f6c9229fb33188","errors":[],"warnings":[],"metrics":{"Declarations and side effects mixed":{"values":{"no":1}},"PHP short open tag used":{"values":{"no":1}},"EOL char":{"values":{"\\n":1}},"Number of newlines at EOF":{"values":{"1":1}},"PHP closing tag at end of PHP-only file":{"values":{"no":1}},"Line length":{"values":{"80 or less":9}},"Line indent":{"values":{"spaces":3}},"PHP keyword case":{"values":{"lower":6}},"Multiple statements on same line":{"values":{"no":5}},"One class per file":{"values":{"yes":1}},"Class defined in namespace":{"values":{"yes":1}},"PascalCase class name":{"values":{"yes":1}},"Class opening brace placement":{"values":{"new line":1}}},"errorCount":0,"warningCount":0,"fixableCount":0,"numTokens":60},"\/home\/carlos\/Projects\/circuit\/src\/Exception\/CircuitOpenException.php":{"hash":"95095ba149190943d550d91314f2e92033188","errors":[],"warnings":[],"metrics":{"Declarations and side effects mixed":{"values":{"no":1}},"PHP short open tag used":{"values":{"no":1}},"EOL char":{"values":{"\\n":1}},"Number of newlines at EOF":{"values":{"1":1}},"PHP closing tag at end of PHP-only file":{"values":{"no":1}},"Line length":{"values":{"80 or less":9,"81-120":1}},"Line indent":{"values":{"spaces":4}},"PHP keyword case":{"values":{"lower":7}},"Multiple statements on same line":{"values":{"no":3}},"One class per file":{"values":{"yes":1}},"Class defined in namespace":{"values":{"yes":1}},"PascalCase class name":{"values":{"yes":1}},"Class opening brace placement":{"values":{"new line":1}},"PHP constant case":{"values":{"lower":1}},"PHP type case":{"values":{"lower":2}},"Function opening brace placement":{"values":{"new line":1}}},"errorCount":0,"warningCount":0,"fixableCount":0,"numTokens":89},"\/home\/carlos\/Projects\/circuit\/src\/Metrics\/CircuitMetrics.php":{"hash":"42e087314144b684df5b004a065fb86b33188","errors":[],"warnings":[],"metrics":{"Declarations and side effects mixed":{"values":{"no":1}},"PHP short open tag used":{"values":{"no":1}},"EOL char":{"values":{"\\n":1}},"Number of newlines at EOF":{"values":{"1":1}},"PHP closing tag at end of PHP-only file":{"values":{"no":1}},"Line length":{"values":{"80 or less":35}},"Line indent":{"values":{"spaces":29}},"PHP keyword case":{"values":{"lower":18}},"Multiple statements on same line":{"values":{"no":11}},"One class per file":{"values":{"yes":1}},"Class defined in namespace":{"values":{"yes":1}},"PascalCase class name":{"values":{"yes":1}},"Class opening brace placement":{"values":{"new line":1}},"PHP type case":{"values":{"lower":9}},"CamelCase method name":{"values":{"yes":5}},"Function opening brace placement":{"values":{"new line":5}}},"errorCount":0,"warningCount":0,"fixableCount":0,"numTokens":247},"\/home\/carlos\/Projects\/circuit\/src\/Contract\/LoggerInterface.php":{"hash":"fc1c0b8c4b646d9e6157ed1bbcaabb1033188","errors":[],"warnings":[],"metrics":{"Declarations and side effects mixed":{"values":{"no":1}},"PHP short open tag used":{"values":{"no":1}},"EOL char":{"values":{"\\n":1}},"Number of newlines at EOF":{"values":{"1":1}},"PHP closing tag at end of PHP-only file":{"values":{"no":1}},"Line length":{"values":{"80 or less":7}},"Line indent":{"values":{"spaces":1}},"PHP keyword case":{"values":{"lower":5}},"Multiple statements on same line":{"values":{"no":3}},"One class per file":{"values":{"yes":1}},"Class defined in namespace":{"values":{"yes":1}},"PascalCase class name":{"values":{"yes":1}},"Class opening brace placement":{"values":{"new line":1}},"CamelCase method name":{"values":{"yes":1}},"PHP type case":{"values":{"lower":3}}},"errorCount":0,"warningCount":0,"fixableCount":0,"numTokens":53},"\/home\/carlos\/Projects\/circuit\/src\/Service\/TimeoutExecutor.php":{"hash":"b0f1206f7c8ae82b3282089a8d2de43b33188","errors":[],"warnings":[],"metrics":{"Declarations and side effects mixed":{"values":{"no":1}},"PHP short open tag used":{"values":{"no":1}},"EOL char":{"values":{"\\n":1}},"Number of newlines at EOF":{"values":{"1":1}},"PHP closing tag at end of PHP-only file":{"values":{"no":1}},"Line length":{"values":{"80 or less":55,"81-120":4}},"Line indent":{"values":{"spaces":53}},"PHP keyword case":{"values":{"lower":30}},"Multiple statements on same line":{"values":{"no":30}},"One class per file":{"values":{"yes":1}},"Class defined in namespace":{"values":{"yes":1}},"PascalCase class name":{"values":{"yes":1}},"Class opening brace placement":{"values":{"new line":1}},"CamelCase method name":{"values":{"yes":1}},"PHP type case":{"values":{"lower":3}},"Function opening brace placement":{"values":{"new line":1}},"Spaces after control structure open parenthesis":{"values":[9]},"Spaces before control structure close parenthesis":{"values":[9]},"Blank lines at start of control structure":{"values":[10]},"Blank lines at end of control structure":{"values":[10]},"Control structure defined inline":{"values":{"no":8}},"PHP constant case":{"values":{"lower":2}}},"errorCount":0,"warningCount":0,"fixableCount":0,"numTokens":559},"\/home\/carlos\/Projects\/circuit\/src\/Config\/CircuitBreakerConfig.php":{"hash":"5080e0dfb658ac6a344d1f4463c7f5f733188","errors":[],"warnings":[],"metrics":{"Declarations and side effects mixed":{"values":{"no":1}},"PHP short open tag used":{"values":{"no":1}},"EOL char":{"values":{"\\n":1}},"Number of newlines at EOF":{"values":{"1":1}},"PHP closing tag at end of PHP-only file":{"values":{"no":1}},"Line length":{"values":{"80 or less":29}},"Line indent":{"values":{"spaces":23}},"PHP keyword case":{"values":{"lower":25}},"Multiple statements on same line":{"values":{"no":6}},"One class per file":{"values":{"yes":1}},"Class defined in namespace":{"values":{"yes":1}},"PascalCase class name":{"values":{"yes":1}},"Class opening brace placement":{"values":{"new line":1}},"PHP type case":{"values":{"lower":8}},"CamelCase method name":{"values":{"yes":4}},"Function opening brace placement":{"values":{"new line":4}}},"errorCount":0,"warningCount":0,"fixableCount":0,"numTokens":206},"\/home\/carlos\/Projects\/circuit\/src\/CircuitBreaker.php":{"hash":"5dc5604bb177f602154f1dde33aedcc533204","errors":{"50":{"13":[{"message":"No blank line found after control structure","source":"Squiz.WhiteSpace.ControlStructureSpacing.NoLineAfterClose","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\WhiteSpace\\ControlStructureSpacingSniff","severity":0,"fixable":true}]},"66":{"13":[{"message":"No blank line found after control structure","source":"Squiz.WhiteSpace.ControlStructureSpacing.NoLineAfterClose","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\WhiteSpace\\ControlStructureSpacingSniff","severity":0,"fixable":true}]}},"warnings":[],"metrics":{"Declarations and side effects mixed":{"values":{"no":1}},"PHP short open tag used":{"values":{"no":1}},"EOL char":{"values":{"\\n":1}},"Number of newlines at EOF":{"values":{"1":1}},"PHP closing tag at end of PHP-only file":{"values":{"no":1}},"Line length":{"values":{"80 or less":120,"81-120":3}},"Line indent":{"values":{"spaces":111}},"PHP keyword case":{"values":{"lower":66}},"Multiple statements on same line":{"values":{"no":52}},"One class per file":{"values":{"yes":1}},"Class defined in namespace":{"values":{"yes":1}},"PascalCase class name":{"values":{"yes":1}},"Class opening brace placement":{"values":{"new line":1}},"PHP type case":{"values":{"lower":15}},"PHP constant case":{"values":{"lower":6}},"CamelCase method name":{"values":{"yes":9}},"Function opening brace placement":{"values":{"new line":9}},"Spaces after control structure open parenthesis":{"values":[12]},"Spaces before control structure close parenthesis":{"values":[12]},"Blank lines at start of control structure":{"values":[13]},"Blank lines at end of control structure":{"values":[13]},"Control structure defined inline":{"values":{"no":11}},"Use of ELSE IF or ELSEIF":{"values":{"elseif":1}}},"errorCount":2,"warningCount":0,"fixableCount":2,"numTokens":1086}}
14 changes: 7 additions & 7 deletions src/CircuitBreaker.php
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ public function call(callable $callback, ?callable $fallback = null): mixed
if ($this->isOpen()) {
$this->metrics->incrementRejections();
$this->log('Circuit is open, request rejected');

if ($fallback !== null) {
return $fallback();
}
Expand All @@ -60,7 +60,7 @@ public function call(callable $callback, ?callable $fallback = null): mixed
return $result;
} catch (\Throwable $e) {
$this->onFailure($e);

if ($fallback !== null) {
return $fallback();
}
Expand All @@ -72,7 +72,7 @@ private function onSuccess(): void
{
$this->failureCount = 0;
$this->metrics->incrementSuccesses();

if ($this->state === CircuitState::HALF_OPEN) {
$this->successCount++;
if ($this->successCount >= $this->config->getSuccessThreshold()) {
Expand All @@ -87,11 +87,11 @@ private function onFailure(\Throwable $e): void
$this->successCount = 0;
$this->lastFailureTime = time();
$this->metrics->incrementFailures();

if ($this->failureCount >= $this->config->getFailureThreshold()) {
$this->transitionTo(CircuitState::OPEN);
}

$this->log("Circuit breaker failure: " . $e->getMessage());
}

Expand All @@ -111,14 +111,14 @@ private function transitionTo(CircuitState $newState): void
$oldState = $this->state;
$this->state = $newState;
$this->lastStateChange = time();

if ($newState === CircuitState::CLOSED) {
$this->failureCount = 0;
$this->successCount = 0;
} elseif ($newState === CircuitState::HALF_OPEN) {
$this->successCount = 0;
}

$this->log("Circuit breaker state changed from {$oldState->value} to {$newState->value}");
}

Expand Down
3 changes: 2 additions & 1 deletion src/Config/CircuitBreakerConfig.php
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,8 @@ public function __construct(
private readonly int $successThreshold = 2,
private readonly int $resetTimeout = 30,
private readonly int $operationTimeout = 5
) {}
) {
}

public function getFailureThreshold(): int
{
Expand Down
12 changes: 6 additions & 6 deletions src/Service/TimeoutExecutor.php
Original file line number Diff line number Diff line change
Expand Up @@ -43,27 +43,27 @@ public function executeWithTimeout(callable $callback, int $timeout): mixed
while (time() - $start < $timeout) {
$status = null;
$res = pcntl_waitpid($pid, $status, WNOHANG);

if ($res === -1) {
shmop_delete($shmId);
throw new \RuntimeException('Error waiting for child process');
}

if ($res > 0) {
$data = shmop_read($shmId, 0, 1024);
shmop_delete($shmId);

if (pcntl_wifexited($status) && pcntl_wexitstatus($status) === 0) {
return unserialize($data);
}

$error = unserialize($data);
throw new \RuntimeException($error['error'] ?? "Operation failed");
}

usleep(100000); // 100ms
}

posix_kill($pid, SIGKILL);
pcntl_waitpid($pid, $status); // Clean up zombie process
shmop_delete($shmId);
Expand Down

0 comments on commit 87cc7cb

Please sign in to comment.