Amp 正在参加 2020 年度 OSC 中国开源项目评选,请投票支持!
Amp 在 2020 年度 OSC 中国开源项目评选 中已获得 {{ projectVoteCount }} 票,请投票支持!
投票让它出道
已投票
Amp 获得 2020 年度 OSC 中国开源项目评选「最佳人气项目」 !
Amp 获得 2020 年度 OSC 中国开源项目评选「最佳人气项目」「最积极运营项目」 !
Amp 获得 2020 年度 OSC 中国开源项目评选「最积极运营项目」 !
授权协议 MIT
开发语言 PHP 查看源码 »
操作系统 跨平台
软件类型 开源软件
开源组织
地区 不详
投 递 者 红薯
适用人群 未知
收录时间 2009-11-25

软件简介

Amp 是一个 PHP 非阻塞并发框架,它提供了一个事件循环,promise 和 stream 作为异步编程的基础。与生成器结合使用的 promise 用于构建协程,它允许像同步代码一样编写异步代码,而不需要任何回调。

demo:

<?php

use Amp\Artax\Response;
use Amp\Loop;

require __DIR__ . '/../vendor/autoload.php';

Loop::run(function () {
    $uris = [
        "https://google.com/",
        "https://github.com/",
        "https://stackoverflow.com/",
    ];

    $client = new Amp\Artax\DefaultClient;
    $client->setOption(Amp\Artax\Client::OP_DISCARD_BODY, true);

    try {
        foreach ($uris as $uri) {
            $promises[$uri] = $client->request($uri);
        }

        $responses = yield $promises;

        foreach ($responses as $uri => $response) {
            print $uri . " - " . $response->getStatus() . $response->getReason() . PHP_EOL;
        }
    } catch (Amp\Artax\HttpException $error) {
        // If something goes wrong Amp will throw the exception where the promise was yielded.
        // The Client::request() method itself will never throw directly, but returns a promise.
        print $error->getMessage() . PHP_EOL;
    }
});
展开阅读全文

代码

的 Gitee 指数为
超过 的项目

评论 (0)

加载中
更多评论
暂无内容
发表了博客
2016/11/03 23:52

matlab的&和&&操作

A&B (1)首先判断A的逻辑值,然后判断B的值,然后进行逻辑与的计算。 (2)A和B可以为矩阵(e.g. A=[1 0],B=[0 0])。 A&&B (1)首先判断A的逻辑值,如果A的值为假,就可以判断整个表达式的值为假,就不需要再判断B的值。 (2)A和B不能是矩阵,只能是标量。 "|"与“||”同理。 位操作有很多种,bitand,bitcmp,bitget,bitmax,bitor,bitset,bitxor,bitshift 你可以看看matlab的help。 我找一个用的比较多的bitshift吧 bitshift...

0
0
发表了博客
2019/03/06 13:23

ES 6 proimse &&iterator &&Generator函数 &&async

1.proimse 异步调用 function getData(){ let promise =new Promise((resolve,reject)); let xmlHttp =new XMLHttpRequest(); xmlHttp.onreadystatechange =function(){ if(xmlHttp.readyState===4){ if(xmlHttp.status==200){ resolve(xmlHttp.response) }else{ reject('数据没有内容') } } }; xmlHttp.open...

0
0
发表了博客
2013/03/15 21:15

Url 参数: &amp;

Url 参数: & href= "../LineChannel/GetLineListBySearch?countryid=" + countryid + "&seriesid=" + seriesid + "&dictionaryid=" + dictionaryid + "&cityid=" + cityid + "&campid=" + campid + "&pagesize=" + pagesize + "&pageindex=" + pageindex + "&localtoken=" + localtoken 是错误的. & 是dreamweaver做静态图的时候添加的. 后台获取url参数的时候应该用 & 分割 url参数.否则可...

0
0
发表了博客
2018/05/10 01:19

Linux 下的 Redis 安装 && 启动 && 关闭 && 卸载

转自https://blog.csdn.net/zgf19930504/article/details/51850594 Redis 在Linux 和 在Windows 下的安装是有很大的不同的,和通常的软件安装是一样的. 一 下载 Redis 安装包   去redis 官网下载reids 安装包, redis 官网默认只提供Linux 的安装包,所以不用担心下载到windows 的安装包.笔者下载的是 redis-3.2.1.tar.gz. 下载的为redis 源码,应该使用源码安装方式安装redis. 二 安装redis 1. 解压: tar -zxvf redis-...

0
0
发表了博客
2019/04/10 10:10

枚举类&&注解&&反射

枚举类 枚举类是优化定义固定对象的一种特殊的类。 换句话说,在需要类的实例为一个或者多个并且相对固定的时候,使用枚举类。(枚举类可扩展) <br> 类的实例相对来说固定的有日期,客观不变的一些数字等等。 enum WorkDay { MONDAY, THUEDAY, WEDNESDAY , THURSDAY , FRIDAY; } public class Main { public static void main(String[] args) { System.out.println("Hello World!"); WorkDay work...

0
0
发表了博客
2018/06/05 11:33

Mybatis添加&&删除&&更新

mapper <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!-- 设置命名空间 --> <mapper namespace="com.songyan.mapper.Customer"> <insert id="insertCustomer" parameterType="customer"> insert into tb_customer(id,username,job,phone) values (#{id},#{username},#{job},#{phone})...

0
0
发表了博客
2016/05/30 19:36

出色注释的基本要求&&优先级&&预处理&&宏定义

注释采用英文,尽量避免在注释中使用缩写,特别是不常用的缩写。 注释是对代码的提示,而不是文档。 对于全局数据(全局变量、常量定义等)必须要加注释。 当代码比较长时,特别是多重嵌套时,应当在一些段落的结尾添加注释,便于阅读。 注释代码段应注重“为何做(why)”或者说要达到什么目标,而不是怎样做(how). 注释应该告诉读者操作的意图,而指明”怎么做的“注释通常是冗余的。 数值的单位一定要注释。 对变量的范围给出...

0
0
发表了博客
2019/08/01 14:44

C#基础&&,||与&,|区别

&:按位与,对两个条件都进行判断 &&:逻辑与,只要一个条件满足,另外一个条件就不会执行 同理: |:按位或,对两个条件都进行判断 ||:逻辑或,只要一个条件满足,另外一个条件就不会执行、 例子:展示&&,||只要一个条件满足,&,|必须要两个条件满足 static void Main(string[] args) { //执行 Console.WriteLine("&符号的执行结果"); Console.WriteLine("输入这两个方法的结果{0}", oneMethod() & twoMethod()); Console.W...

0
0
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
暂无内容
0 评论
2 收藏
分享
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部