此包的最新版本(dev-master)没有可用的许可信息。
异步发送http请求或异步运行系统命令!
dev-master
2013-08-30 21:08 UTC
Requires
- php: >=5.3.0
This package is not auto-updated.
Last update: 2024-09-23 14:10:27 UTC
README
定义:Futures -
"Futures(也称为“承诺”)是作为某些计算未来结果的占位符的对象。它们让您可以使用自然的语法表达并行和异步执行。提供了三个具体的Future实现:ExecFuture用于执行系统命令、HTTPFuture用于发送HTTP请求、QueryFuture用于执行数据库查询。” - Facebook
这些都是真的,然而这个库只支持http请求和异步(或同步)执行系统命令的能力。
这是什么?
这组文件最初是从Facebook的libphutil分叉的,其中有一些相当巧妙的小工具,您应该去看看!
这些库用于src/future中的所有内容,所以我将它们命名空间化,清理了代码以遵循PSR标准(尚未完成!),并且只测试了其中的一小部分;发送http请求。
安装
您可以使用composer将此组件添加到您的项目中
{
"require" : {
"hazbo/futures" : "dev-master"
}
}
composer install 或 php composer.phar install
异步
<?php require_once('path/to/vendor/autoload.php'); use Hazbo\Component\Http\HttpFuture; $future = new HttpFuture('http://graph.facebook.com/zuck'); $future->start(); // Check to see if the request has finished var_dump($future->isReady()); // Hang back a second sleep(1); // Lets check again... var_dump($future->isReady()); // One more sec! sleep(1); // Should be ready now! var_dump($future->isReady());
所以上面我们可以看到正在发生什么,相当直接。我们可以调用
start()isReady()resolve()
调用resolve将阻塞future直到请求处理完成,因此本质上起着同步的作用。start将发送请求,然后您可以使用isReady检查其进度。
同步
<?php require_once('path/to/vendor/autoload.php'); use Hazbo\Component\Http\HttpFuture; $future = new HttpFuture('http://graph.facebook.com/zuck'); list($body, $headers) = $future->resolvex(); echo $body;
所以上面我们只是发送了一个同步请求,它将阻塞直到请求完成。
我不知道我是否很好地解释了这一点...但它很棒!感谢Facebook的团队启动了这个项目。欢迎贡献力量!
免责声明
我还没有完成执行系统命令的代码!但我正在非常努力地工作。
我需要帮助整理一些代码!... 请帮忙.