PHP code example of astrahttp / swoole-http
1. Go to this page and download the library: Download astrahttp/swoole-http library . Choose the download type require .
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
astrahttp / swoole-http example snippets
use Astra\SwooleHttp\Client;
$client = new Client([
'port' => 9119,
'debug' => false,
]);
$client = new Client([
'port' => 9119,
'debug' => true,
'workerPath' => __DIR__ . '/bin/index',
]);
$client->close();
use Astra\SwooleHttp\Client;
use Astra\SwooleHttp\Contract\RequestOptions;
$client = new Client(['port' => 9119]);
try {
$handle = $client->get('https://httpbin.org/get', new RequestOptions([
'responseType' => 'json',
]));
$response = $handle->await();
echo $response->text();
} finally {
$client->close();
}
use function Astra\SwooleHttp\initAstraHTTP;
$client = initAstraHTTP(['port' => 9119]);
new RequestOptions([
'headers' => [],
'body' => null,
'responseType' => 'json',
]);
new RequestOptions([
'headers' => [
'Accept' => 'application/json',
'User-Agent' => 'AstraHTTP PHP',
],
]);
new RequestOptions([
'cookies' => [
'session' => 'abc123',
'theme' => 'dark',
],
]);
new RequestOptions([
'cookies' => [
['name' => 'session', 'value' => 'abc123'],
['name' => 'theme', 'value' => 'dark'],
],
]);
new RequestOptions([
'cookies' => (object) [
'session' => 'abc123',
],
]);
new RequestOptions([
'body' => 'hello world',
]);
new RequestOptions([
'headers' => [
'Content-Type' => 'application/json',
],
'body' => [
'name' => 'Ali',
'age' => 42,
],
]);
new RequestOptions([
'body' => [
'title' => 'My upload',
'file' => [
'path' => __DIR__ . '/document.pdf',
'filename' => 'document.pdf',
'mime' => 'application/pdf',
],
],
]);
new RequestOptions([
'body' => [
'_multipart' => true,
'name' => 'Ali',
'avatar' => [
'filename' => 'avatar.png',
'mime' => 'image/png',
'content' => file_get_contents(__DIR__ . '/avatar.png'),
],
],
]);
new RequestOptions([
'responseType' => 'stream',
]);
new RequestOptions([
'ja4r' => '771,4865-4866-4867,...',
'http2Fingerprint' => 'SETTINGS_ENABLE_PUSH=0;WINDOW_SIZE=6291456',
'disableGrease' => true,
]);
new RequestOptions([
'userAgent' => 'Mozilla/5.0 ...',
'proxy' => 'http://127.0.0.1:8080',
'timeout' => 15000,
'forceHTTP1' => true,
]);
new RequestOptions([
'maxRetries' => 3,
'retryDelayMs' => 500,
'retryable' => true,
]);
new RequestOptions([
'onHeaders' => function (array $meta, string $requestId): void {
echo "Headers received for {$requestId}\n";
},
]);
new RequestOptions([
'responseType' => 'stream',
'onChunk' => function (string $chunk, string $requestId, ?array $meta): void {
echo $chunk;
},
]);
new RequestOptions([
'onComplete' => function (\Astra\SwooleHttp\Response $response, string $requestId): void {
echo "Completed: {$requestId}\n";
},
]);
new RequestOptions([
'onError' => function (\Throwable|string $error, string $requestId): void {
echo "Error for {$requestId}: " . (string) $error . PHP_EOL;
},
]);
$response = $client->get('https://example.com', new RequestOptions([
'responseType' => 'text',
]))->await();
echo $response->text();
$response = $client->get('https://httpbin.org/json', new RequestOptions([
'responseType' => 'json',
]))->await();
$data = $response->json();
$response = $client->get('https://example.com/file.bin', new RequestOptions([
'responseType' => 'arraybuffer',
]))->await();
file_put_contents(__DIR__ . '/file.bin', $response->arrayBuffer());
$response = $client->get('https://example.com/large-file', new RequestOptions([
'responseType' => 'stream',
]))->await();
$stream = $response->asStream();
while (($chunk = $stream->read()) !== null) {
echo $chunk;
}
$handle = $client->get('https://httpbin.org/get', new RequestOptions());
// Do other work here...
$response = $handle->await();
$response = $client->get('https://speed.hetzner.de/100MB.bin', new RequestOptions([
'responseType' => 'stream',
]))->await();
$stream = $response->asStream();
while (null !== $chunk = $stream->read()) {
// Process chunk immediately
echo strlen($chunk) . " bytes\n";
}
$response = $client->post('https://example.com/upload', new RequestOptions([
'body' => [
'file' => [
'path' => __DIR__ . '/image.jpg',
'filename' => 'image.jpg',
'mime' => 'image/jpeg',
],
],
]))->await();
$response = $client->post('https://example.com/upload', new RequestOptions([
'body' => [
'title' => 'Project file',
'description' => 'Uploaded from PHP',
'document' => [
'path' => __DIR__ . '/report.pdf',
'filename' => 'report.pdf',
'mime' => 'application/pdf',
],
],
]))->await();
$response = $client->post('https://example.com/upload', new RequestOptions([
'body' => [
'_multipart' => true,
'name' => 'Ali',
'avatar' => [
'filename' => 'avatar.png',
'mime' => 'image/png',
'content' => file_get_contents(__DIR__ . '/avatar.png'),
],
],
]))->await();
$options = new RequestOptions([
'ja4r' => '771,4865-4866-4867,0-10-11-13-16,29-23-24,0',
'http2Fingerprint' => 'SETTINGS_ENABLE_PUSH=0',
'disableGrease' => true,
]);
new RequestOptions([
'retryable' => true,
'maxRetries' => 5,
'retryDelayMs' => 250,
]);
new RequestOptions([
'retryable' => false,
]);
$clientA = new Client(['port' => 9119]);
$clientB = new Client(['port' => 9119]);
$socket = $client->websocket('wss://echo.example.com/socket', new RequestOptions([
'protocol' => 'websocket',
]))->await();
$sse = $client->sse('https://example.com/events', new RequestOptions([
'protocol' => 'sse',
]))->await();
new RequestOptions([
'cookies' => [
'session' => 'abc123',
'lang' => 'en',
],
]);
new RequestOptions([
'cookies' => [
['name' => 'session', 'value' => 'abc123'],
['name' => 'lang', 'value' => 'en'],
],
]);
$response = $client->get('https://httpbin.org/get')->await();
echo $response->text();
$response = $client->post('https://httpbin.org/post', new RequestOptions([
'headers' => ['Content-Type' => 'application/json'],
'body' => ['name' => 'Ali'],
'responseType' => 'json',
]))->await();
$response = $client->get('https://example.com', new RequestOptions([
'headers' => [
'Accept' => 'text/html',
'Cache-Control' => 'no-cache',
],
]))->await();
$response = $client->get('https://example.com', new RequestOptions([
'userAgent' => 'Mozilla/5.0 ...',
]))->await();
$response = $client->get('https://example.com', new RequestOptions([
'proxy' => 'http://127.0.0.1:8080',
]))->await();
$response = $client->get('https://self-signed.example.local', new RequestOptions([
'insecureSkipVerify' => true,
]))->await();
$response = $client->get('https://example.com', new RequestOptions([
'forceHTTP1' => true,
]))->await();
$response = $client->get('https://example.com/slow', new RequestOptions([
'timeout' => 30000,
]))->await();
try {
$response = $client->get('https://example.com', new RequestOptions([
'timeout' => 5000,
]))->await();
echo $response->text();
} catch (\Throwable $e) {
echo 'Request failed: ' . $e->getMessage();
}
$response = $client->get('https://api.github.com', new RequestOptions([
'headers' => [
'Accept' => 'application/vnd.github+json',
'User-Agent' => 'AstraHTTP PHP',
],
'responseType' => 'json',
]))->await();
$data = $response->json();
$response = $client->post('https://example.com/upload', new RequestOptions([
'body' => [
'file' => [
'path' => __DIR__ . '/report.pdf',
'filename' => 'report.pdf',
'mime' => 'application/pdf',
],
],
]))->await();
$response = $client->get('https://example.com/big.bin', new RequestOptions([
'responseType' => 'stream',
]))->await();
$stream = $response->asStream();
while (($chunk = $stream->read()) !== null) {
file_put_contents(__DIR__ . '/big.bin', $chunk, FILE_APPEND);
}
$response = $client->get('https://example.com', new RequestOptions([
'ja3' => '771,4865-4867-4866-49195-49199,...',
'disableGrease' => true,
]))->await();
$sse = $client->sse('https://example.com/events')->await();
declare(strict_types=1);
e Astra\SwooleHttp\Contract\RequestOptions;
$client = new Client([
'port' => 9119,
'debug' => false,
]);
try {
$response = $client->get('https://httpbin.org/get', new RequestOptions([
'responseType' => 'json',
'headers' => [
'Accept' => 'application/json',
],
]))->await();
echo $response->text() . PHP_EOL;
} finally {
$client->close();
}
bash
composer in/astrahttp-sw install