此包的最新版本(dev-master)没有可用的许可信息。

异步发送http请求或异步运行系统命令!

dev-master 2013-08-30 21:08 UTC

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 installphp 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的团队启动了这个项目。欢迎贡献力量!

免责声明

我还没有完成执行系统命令的代码!但我正在非常努力地工作。

我需要帮助整理一些代码!... 请帮忙.