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 异步
每月 133 次下载
14KB
224 行
php-tokio - 使用PHP调用任何异步Rust库!
由 Daniil Gentili (@danog) 创建。
此库允许您异步地从PHP中调用任何异步Rust库。
它完全集成于 revolt:这允许与 amphp、PSL 和 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扩展列表(通过编辑此文件添加您的扩展!)
- nicelocal/mongo-php-async-driver - 一个异步MongoDB PHP扩展
依赖关系
~4–15MB
~192K SLoC