From c77891c7200d9c5a56ae36b87bc4d8c582993011 Mon Sep 17 00:00:00 2001 From: Martin Linzmayer Date: Thu, 30 Apr 2026 15:01:30 +0200 Subject: [PATCH 1/5] ref: remove AgentClient from agent repo --- .github/workflows/phpstan.yaml | 18 ------ .php-cs-fixer.dist.php | 1 - README.md | 10 ++-- agent/composer.json | 2 +- composer.json | 23 +------- examples/send.php | 4 +- phpstan.neon | 4 -- src/Transport/AgentClient.php | 101 --------------------------------- 8 files changed, 13 insertions(+), 150 deletions(-) delete mode 100644 phpstan.neon delete mode 100644 src/Transport/AgentClient.php diff --git a/.github/workflows/phpstan.yaml b/.github/workflows/phpstan.yaml index 6804a8f..e678e94 100644 --- a/.github/workflows/phpstan.yaml +++ b/.github/workflows/phpstan.yaml @@ -11,24 +11,6 @@ permissions: contents: read jobs: - phpstan: - name: PHPStan - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5 - - - name: Setup PHP - uses: shivammathur/setup-php@ec406be512d7077f68eed36e63f4d91bc006edc4 # v2.35.4``` - with: - php-version: '8.4' - - - name: Install dependencies - run: composer update --no-progress --no-interaction --prefer-dist - - - name: Run script - run: vendor/bin/phpstan analyse - phpstan-agent: name: PHPStan (agent) runs-on: ubuntu-latest diff --git a/.php-cs-fixer.dist.php b/.php-cs-fixer.dist.php index 5e52092..ac68d47 100644 --- a/.php-cs-fixer.dist.php +++ b/.php-cs-fixer.dist.php @@ -41,7 +41,6 @@ ->setFinder( PhpCsFixer\Finder::create() ->in([ - __DIR__ . '/src', __DIR__ . '/agent/src', ]) ); diff --git a/README.md b/README.md index 9cc7b51..f4630a6 100644 --- a/README.md +++ b/README.md @@ -21,20 +21,22 @@ _Bad software is everywhere, and we're tired of it. Sentry is on a mission to he ### Install -Install the agent using [Composer](https://getcomposer.org/). +Install the agent alongside the [PHP SDK](https://github.com/getsentry/sentry-php) using [Composer](https://getcomposer.org/). ```bash -composer require sentry/sentry-agent +composer require sentry/sentry sentry/sentry-agent ``` ### Configuration -The agent is configured as a custom HTTP client for the [PHP](https://github.com/getsentry/sentry-php) (also [Symfony](https://github.com/getsentry/sentry-symfony) & [Laravel](https://github.com/getsentry/sentry-laravel)) SDKs. +Use the SDK-provided agent client as the custom HTTP client for the [PHP](https://github.com/getsentry/sentry-php) (also [Symfony](https://github.com/getsentry/sentry-symfony) & [Laravel](https://github.com/getsentry/sentry-laravel)) SDKs. ```php +use Sentry\Agent\Transport\AgentClientBuilder; + Sentry\init([ 'dsn' => '___PUBLIC_DSN___', - 'http_client' => new \Sentry\Agent\Transport\AgentClient(), + 'http_client' => AgentClientBuilder::create()->getClient(), ]); ``` diff --git a/agent/composer.json b/agent/composer.json index 6dd852f..5331e4f 100644 --- a/agent/composer.json +++ b/agent/composer.json @@ -16,7 +16,7 @@ "clue/mq-react": "^1.6", "react/http": "^1.11", "react/socket": "^1.16", - "sentry/sentry": "^4.19.1" + "sentry/sentry": "dev-master as 4.26.0" }, "autoload": { "psr-4": { diff --git a/composer.json b/composer.json index 5d4e697..d324618 100644 --- a/composer.json +++ b/composer.json @@ -12,37 +12,20 @@ ], "require": { "php": "^7.2|^8", - "ext-json": "*", - "sentry/sentry": "^4.19.1" - }, - "autoload": { - "psr-4": { - "Sentry\\Agent\\": "src/" - } + "ext-json": "*" }, "require-dev": { - "friendsofphp/php-cs-fixer": "^3.70", - "phpstan/phpstan": "^2.1", - "phpunit/phpunit": "^8.5|^9.6" - }, - "autoload-dev": { - "psr-4": { - "Sentry\\Agent\\Tests\\": "tests/" - } + "friendsofphp/php-cs-fixer": "^3.70" }, "bin": [ "bin/sentry-agent" ], "scripts": { "check": [ - "@cs-check", - "@phpstan", - "@tests" + "@cs-check" ], - "tests": "vendor/bin/phpunit --verbose", "cs-check": "vendor/bin/php-cs-fixer fix --verbose --diff --dry-run", "cs-fix": "vendor/bin/php-cs-fixer fix --verbose --diff", - "phpstan": "vendor/bin/phpstan analyse", "build": "scripts/build.sh" }, "config": { diff --git a/examples/send.php b/examples/send.php index 065ee3c..dceee98 100644 --- a/examples/send.php +++ b/examples/send.php @@ -2,11 +2,13 @@ declare(strict_types=1); +use Sentry\Agent\Transport\AgentClientBuilder; + require_once __DIR__ . '/../vendor/autoload.php'; Sentry\init([ 'dsn' => '___PUBLIC_DSN___', - 'http_client' => new Sentry\Agent\Transport\AgentClient(), + 'http_client' => AgentClientBuilder::create()->getClient(), ]); $startTime = microtime(true); diff --git a/phpstan.neon b/phpstan.neon deleted file mode 100644 index 3e639cd..0000000 --- a/phpstan.neon +++ /dev/null @@ -1,4 +0,0 @@ -parameters: - level: 9 - paths: - - src diff --git a/src/Transport/AgentClient.php b/src/Transport/AgentClient.php deleted file mode 100644 index a97047e..0000000 --- a/src/Transport/AgentClient.php +++ /dev/null @@ -1,101 +0,0 @@ -host = $host; - $this->port = $port; - } - - public function __destruct() - { - $this->disconnect(); - } - - /** - * @phpstan-assert-if-true resource $this->socket - */ - private function connect(): bool - { - if ($this->socket !== null) { - return true; - } - - // We set the timeout to 10ms to avoid blocking the request for too long if the agent is not running - // @TODO: 10ms should be low enough? Do we want to go lower and/or make this configurable? Only applies to initial connection. - $socket = fsockopen($this->host, $this->port, $errorNo, $errorMsg, 0.01); - - // @TODO: Error handling? See $errorNo and $errorMsg - if ($socket === false) { - return false; - } - - // @TODO: Set a timeout for the socket to prevent blocking (?) if the socket connection stops working after the connection (e.g. the agent is stopped) if needed - $this->socket = $socket; - - return true; - } - - private function disconnect(): void - { - if ($this->socket === null) { - return; - } - - fclose($this->socket); - - $this->socket = null; - } - - private function send(string $message): void - { - if (!$this->connect()) { - return; - } - - // @TODO: Make sure we don't send more than 2^32 - 1 bytes - $contentLength = pack('N', \strlen($message) + 4); - - // @TODO: Error handling? - fwrite($this->socket, $contentLength . $message); - } - - public function sendRequest(Request $request, Options $options): Response - { - $body = $request->getStringBody(); - - if (empty($body)) { - return new Response(400, [], 'Request body is empty'); - } - - $this->send($body); - - // Since we are sending async there is no feedback so we always return an empty response - return new Response(202, [], ''); - } -} From 810dee941860f5612a5ba52883f927aa77b258a7 Mon Sep 17 00:00:00 2001 From: github-actions <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 30 Apr 2026 13:24:38 +0000 Subject: [PATCH 2/5] Add PHAR artifact --- bin/sentry-agent | Bin 1849983 -> 1865967 bytes bin/sentry-agent.sig | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/sentry-agent b/bin/sentry-agent index 201829761d1c5ebdddef5cf3e4845f79f5231962..de7021326926c54afc4a111584cb9ede5fd3a807 100755 GIT binary patch delta 7886 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 d+W7H5X%4^rn?IfKKD+J-1^xx$+T{|^YnpaK8@ delta 864 zcmZ9~Z%7ki90%}S_sq7Pw>!6K{@c2YP%_QwPE5(I8I)=C2Li=jIQ3?dZt5(O%*=nY zghC$bXJyp1e~Oi1b>@rGH@-=su&kia=nol$3Q>?R>N(e|4nBPEe!uU*^Ws@ps`>My zdWfggrlTs=#o=%&T+i?7RjHb0Mh+<{ruOJ@CigxHw*`kvil2YYT&Gkkj~S2ajnMNP zv3!m>SW%LFAK%qi%v*3lz8O4?bi}Z8^L{lhaGK$opVq*Wc6uF774!MaT<|9)RW)}{ z;iWxB{509HQo}>(EI0~L7=A168t(!617dQ~W|TN9ir=_q_PfvGAZw&WXt z@1`|a$U(!i&bAOf?cd>)?DQoT;4ZfjJ2n`=agx@w1akd>T#8sF2Xg5#3*53JlU!dx ze>KY={j~Q{a8O`JtugX}BD9o+Y{{u2yf};22H#RJTAxtjmZY?_469^yr5kjmcH1brp_U0fo)atad z*Q1M^ljDjQhl!VJU3F4ry--pw)E$z9V!74J1Psv?9$%g0Dihq^TA|WgUS8oTPZo|l ze3ArV2N??#HZxI%DzC>&mV$JwRI0A4@Opf3{}XS7(OIqCpWVU`p>lQ$J8uD7fL%*_ z%HqM=5n_USi%bYi^|Bmv2G|7nc9YeE*-3?87^T!ob-kR}$2w{MbU!Ok_v@D@;B_On z1+r>56Xf-UYT-(Q&H`g8q`lZ1s)oJKm`IqLr?ko^g5M3gjWAoo* Date: Tue, 5 May 2026 21:03:41 +0200 Subject: [PATCH 3/5] add proper dependency version --- agent/composer.json | 2 +- agent/composer.lock | 36 +++++++++++++++++++++--------------- bin/sentry-agent | Bin 1865967 -> 1865309 bytes bin/sentry-agent.sig | 2 +- examples/send.php | 8 +++++--- 5 files changed, 28 insertions(+), 20 deletions(-) diff --git a/agent/composer.json b/agent/composer.json index 5331e4f..9004433 100644 --- a/agent/composer.json +++ b/agent/composer.json @@ -16,7 +16,7 @@ "clue/mq-react": "^1.6", "react/http": "^1.11", "react/socket": "^1.16", - "sentry/sentry": "dev-master as 4.26.0" + "sentry/sentry": "4.26.0" }, "autoload": { "psr-4": { diff --git a/agent/composer.lock b/agent/composer.lock index 395bfea..ca6f985 100644 --- a/agent/composer.lock +++ b/agent/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "96c9e58e39082c47dc720fcd114c68b6", + "content-hash": "2440bbf4663b7a18044fdda6212dac74", "packages": [ { "name": "clue/mq-react", @@ -1035,16 +1035,16 @@ }, { "name": "sentry/sentry", - "version": "4.19.1", + "version": "4.26.0", "source": { "type": "git", "url": "https://github.com/getsentry/sentry-php.git", - "reference": "1c21d60bebe67c0122335bd3fe977990435af0a3" + "reference": "7597fd10c443929c62489d7cf38d1cb8341d6608" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/getsentry/sentry-php/zipball/1c21d60bebe67c0122335bd3fe977990435af0a3", - "reference": "1c21d60bebe67c0122335bd3fe977990435af0a3", + "url": "https://api.github.com/repos/getsentry/sentry-php/zipball/7597fd10c443929c62489d7cf38d1cb8341d6608", + "reference": "7597fd10c443929c62489d7cf38d1cb8341d6608", "shasum": "" }, "require": { @@ -1065,12 +1065,18 @@ "guzzlehttp/promises": "^2.0.3", "guzzlehttp/psr7": "^1.8.4|^2.1.1", "monolog/monolog": "^1.6|^2.0|^3.0", + "nyholm/psr7": "^1.8", + "open-telemetry/api": "^1.0", + "open-telemetry/exporter-otlp": "^1.0", + "open-telemetry/sdk": "^1.0", "phpbench/phpbench": "^1.0", "phpstan/phpstan": "^1.3", - "phpunit/phpunit": "^8.5|^9.6", - "vimeo/psalm": "^4.17" + "phpunit/phpunit": "^8.5.52|^9.6.34", + "spiral/roadrunner-http": "^3.6", + "spiral/roadrunner-worker": "^3.6" }, "suggest": { + "ext-excimer": "Enable Sentry profiling with the Excimer PHP extension.", "monolog/monolog": "Allow sending log messages to Sentry by using the included Monolog handler." }, "type": "library", @@ -1107,7 +1113,7 @@ ], "support": { "issues": "https://github.com/getsentry/sentry-php/issues", - "source": "https://github.com/getsentry/sentry-php/tree/4.19.1" + "source": "https://github.com/getsentry/sentry-php/tree/4.26.0" }, "funding": [ { @@ -1119,7 +1125,7 @@ "type": "custom" } ], - "time": "2025-12-02T15:57:41+00:00" + "time": "2026-04-30T12:50:22+00:00" }, { "name": "symfony/options-resolver", @@ -1190,16 +1196,16 @@ }, { "name": "symfony/polyfill-php80", - "version": "v1.33.0", + "version": "v1.37.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "0cc9dd0f17f61d8131e7df6b84bd344899fe2608" + "reference": "dfb55726c3a76ea3b6459fcfda1ec2d80a682411" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/0cc9dd0f17f61d8131e7df6b84bd344899fe2608", - "reference": "0cc9dd0f17f61d8131e7df6b84bd344899fe2608", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/dfb55726c3a76ea3b6459fcfda1ec2d80a682411", + "reference": "dfb55726c3a76ea3b6459fcfda1ec2d80a682411", "shasum": "" }, "require": { @@ -1250,7 +1256,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php80/tree/v1.33.0" + "source": "https://github.com/symfony/polyfill-php80/tree/v1.37.0" }, "funding": [ { @@ -1270,7 +1276,7 @@ "type": "tidelift" } ], - "time": "2025-01-02T08:10:11+00:00" + "time": "2026-04-10T16:19:22+00:00" } ], "packages-dev": [ diff --git a/bin/sentry-agent b/bin/sentry-agent index de7021326926c54afc4a111584cb9ede5fd3a807..c0a072d20ae72c77bfc0759ae69fd3cf2881bc78 100755 GIT binary patch delta 12747 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 Wz4zPB_~v0x;ZNyr8_>JD_x}T5tHYuI diff --git a/bin/sentry-agent.sig b/bin/sentry-agent.sig index c6f0173..415588a 100644 --- a/bin/sentry-agent.sig +++ b/bin/sentry-agent.sig @@ -1 +1 @@ -E50CB4358FA3CF15C799A1EA52FC9CC584232BAD5B79FAF327DF21C1AB83735EBC0355995D3B455AACDD9D22FB8BEADDF53C1545E9AA089CCCC6F6B363A44E9A +4CEF262DA0FEDC2647FD4FD8DF2F09623CD24E976812A96F5A508E522770E5F387611C7E82AC6A875D6356A72A4A077ADED649C5CEF828E10472E4DB51409C83 diff --git a/examples/send.php b/examples/send.php index dceee98..d501145 100644 --- a/examples/send.php +++ b/examples/send.php @@ -4,11 +4,13 @@ use Sentry\Agent\Transport\AgentClientBuilder; -require_once __DIR__ . '/../vendor/autoload.php'; +require_once __DIR__ . '/../agent/vendor/autoload.php'; Sentry\init([ - 'dsn' => '___PUBLIC_DSN___', - 'http_client' => AgentClientBuilder::create()->getClient(), + 'dsn' => getenv('SENTRY_DSN') ?: 'https://public@example.com/1', + 'http_client' => AgentClientBuilder::create() + ->disableFallbackClient() + ->getClient(), ]); $startTime = microtime(true); From cff8e42042c1514cd5491a0a02508a0aeb4f2f8a Mon Sep 17 00:00:00 2001 From: github-actions <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 5 May 2026 19:04:22 +0000 Subject: [PATCH 4/5] Add PHAR artifact --- bin/sentry-agent | Bin 1865309 -> 1865881 bytes bin/sentry-agent.sig | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/sentry-agent b/bin/sentry-agent index c0a072d20ae72c77bfc0759ae69fd3cf2881bc78..93990e2bb9052175d6db8bd9e0e9ec3a9cc4e3dc 100755 GIT binary patch delta 12617 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 delta 12845 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–QvE#j1t~Op^j3OHx&CJ}+%iU`rx$0dzBJRT4XXQ<@YNd{0fN`53h9Dc z)pj&LrBcxQ#;D}@>AnF&fL6$1%6Ax`F9xZsN@^OYI>0e36a99XYM?~q_$w}Vq*M#! z(DSU)MfXlqZIr^auo_=HajcXR4SFSwZZve_yR0VyPde0vteZ;V=QBz-9fv}kFzuAe z1o<0PN_y@ym0t&YLDg-;B$JZa!xQzJ(PYF}3&qQOl+Y|vYjGl$|@Jg`_$ z(z(r=%0Zb>9C}?N&=G>R2&2-hQBXvsW^v1?-iPz8YAek7y=E5u@t>Mr_`Bb%f?7Ic zoqiIt#9*e!%7PC-$6VSc96 zn{GE;5!hDBnrEM1`X<#qqaXhs#cp{*B^Dl3HEJuVp+Y@MEt0|#LEVEIIH6wyoz^B4 z>S%hg@Gm7yUo7Npm?#98;dXd;p~eJ9`sh{HI#@3Jt4%P|dshn&tHIMI80cFQgokq2 z*7FN7CImLkHemv_GzvQfK;HSt)ebc?1O=V;kZ@Lg&50H|a*HAA&S-@O86m$DC#q>4 zor6BM#PEdVm-hn2_rhdsysNN-?XGmHXrBjERlK+b+~&eRSE~+FJWg@fygHcv)ndH8 z7|y++QDu^9=1Rlw)$B#0qVb5aLDWP{q#ktM9jg6GMmpfyi^opio~N@6gl~-4Wq0g1 z)VnE;qYp^o-3prqKHY9r&^I?(O^V+iw;r`a$Yjd_?RVB?bng-Cp+b7+=hn0arhR9X z)0z&eNd_Npx2kD-xowt=zT>bSt)%C^wGJwvD~DKTG*CS3ol8$w*amciNtaCM{|cLd zBF{D(z4)N@87bAAw?81Idj`3mt!7iI0k;3-Du!?7x*T-Hv#w|(#qIJibe?gIhn8|2 z>&{Q=gt1NQ- zOy-LI!r)0{kV|`Av7p&aj~eB0wZBP4PfRr7cg@XxadKO^#ZpEMi%p+N>ANYDD?7^J zAgjowszVk(zhRX{wPBJua&5x3vvE*I&tEc)sDKksn6amAvEV=0IqQ;xXM=em-Llvc zR@2_4<^t|NkKP<;2E{c_Q8=~GSp@9^%>tda-13Hu?xB_m*#A~q*yp|szeRLuZ_8#i zUA4thh`%b$%B!F_-`l&xZCflEmD%ha1%u8~zOFL|PHaIAZ*R6MXx#zx$3w0$i?Kmk zN>`Oy##_)RBO77G2^%LVriIpL9%y1rP0)13=zMT)YLsyPHKP{J`th58L2_arnyJ(c5uK3;Nl3swi;W0J_-@H9TGE#K!PfoHGyR zIJ!x)HGlqln+f_nX|IQhC+&LRF4zXa%)ij zpGrS}(mumM2S0D?bkchtwjHt2Q!DJ>3vk^9Y$B^y*i*El%zk$WmR+%#=-n>+2rYeY zgZ-#10~oEddo^%+vt2{CT(NDEL+1))j1+It&{X@H0*0l;3CS+Q%UbqG56N1b$2u<9 zwkg(sjZNpoGW$_AOt@ehP1kI;Z&A~d>9%BmK0nqrPR}mCJ!nHecU%gd{?6iSO~3+8 zx0$SB2Gi$d&PqE>Sm^8lOJBnYW1ZSuW*?w^*b|WjOuf(H%|zt8i0jX8n6|=h|97)89O;$a z&NI2ch(@}R^4}DVm03d%R66f8iz?SFbQ&vv3laO7^KV74do?!GPk(ZCC++9u%vpL^ zb;YKqv6GGu)W6WtpWk#IcZwW)|HIKQKhwu&_jiKmLILK^v}x(49gg>lSWnXZ8%qU! z`BCSmYWkkrWmH0+J7pzg`_uY;k01Suu#PCevczP8+QCi@7`9?RUvt2WUkjda2qgTL zg)DtjwePxT#~Sy|yy*{C#NM~>=~@ZYAF-IB<8LNC>w-9nPcjSpUU=w|p4|3k3NHX9 z`*h?^1?=8$_Ao^>`#R2F#CPQ&Rmr{{tJ Date: Tue, 5 May 2026 21:13:39 +0200 Subject: [PATCH 5/5] version fix --- agent/composer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/agent/composer.json b/agent/composer.json index 9004433..43fe971 100644 --- a/agent/composer.json +++ b/agent/composer.json @@ -16,7 +16,7 @@ "clue/mq-react": "^1.6", "react/http": "^1.11", "react/socket": "^1.16", - "sentry/sentry": "4.26.0" + "sentry/sentry": "^4.26.0" }, "autoload": { "psr-4": {