#php #async #revolt #requests #built #http-request #amphp

php-tokio

使用PHP调用任何异步Rust库!

7个版本

0.1.7 2024年2月26日
0.1.6 2023年11月17日
0.1.4 2023年10月11日
0.1.2 2023年8月27日

#316 in 异步

Download history

每月 133 次下载

Apache-2.0

14KB
224

php-tokio - 使用PHP调用任何异步Rust库!

由 Daniil Gentili (@danog) 创建。

此库允许您异步地从PHP中调用任何异步Rust库。

它完全集成于 revolt:这允许与 amphpPSL 和 reactphp 完全兼容。

示例

以下是一个示例,使用异步Rust reqwest 库从PHP中执行异步HTTP请求

<?php

use Reqwest\Client;

use function Amp\async;
use function Amp\Future\await;

require 'vendor/autoload.php';

Client::init();

function test(int $delay): void {
    $url = "https://httpbin.org/delay/$delay";
    $t = time();
    echo "Making async reqwest to $url that will return after $delay seconds...".PHP_EOL;
    Client::get($url);
    $t = time() - $t;
    echo "Got response from $url after ~".$t." seconds!".PHP_EOL;
};

$futures = [];
$futures []= async(test(...), 5);
$futures []= async(test(...), 5);
$futures []= async(test(...), 5);

await($futures);

用法

cd examples/reqwest && \
    cargo build && \
    composer update && \
    php -d extension=../../target/debug/libexample_reqwest.so test.php

结果

Making async reqwest to https://httpbin.org/delay/5 that will return after 5 seconds...
Making async reqwest to https://httpbin.org/delay/5 that will return after 5 seconds...
Making async reqwest to https://httpbin.org/delay/5 that will return after 5 seconds...
Got response from https://httpbin.org/delay/5 after ~5 seconds!
Got response from https://httpbin.org/delay/5 after ~5 seconds!
Got response from https://httpbin.org/delay/5 after ~5 seconds!

有关如何工作的更多信息,请参阅示例的 源代码

使用php-tokio构建

以下是使用php-tokio构建的异步PHP扩展列表(通过编辑此文件添加您的扩展!

依赖关系

~4–15MB
~192K SLoC