Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:81325 Return-Path: Mailing-List: contact internals-help@lists.php.net; run by ezmlm Delivered-To: mailing list internals@lists.php.net Received: (qmail 13770 invoked from network); 28 Jan 2015 19:13:11 -0000 Received: from unknown (HELO lists.php.net) (127.0.0.1) by localhost with SMTP; 28 Jan 2015 19:13:11 -0000 Authentication-Results: pb1.pair.com smtp.mail=mike.php.net@gmail.com; spf=pass; sender-id=pass Authentication-Results: pb1.pair.com header.from=mike.php.net@gmail.com; sender-id=pass Received-SPF: pass (pb1.pair.com: domain gmail.com designates 74.125.82.173 as permitted sender) X-PHP-List-Original-Sender: mike.php.net@gmail.com X-Host-Fingerprint: 74.125.82.173 mail-we0-f173.google.com Received: from [74.125.82.173] ([74.125.82.173:60262] helo=mail-we0-f173.google.com) by pb1.pair.com (ecelerity 2.1.1.9-wez r(12769M)) with ESMTP id 48/F8-44076-5C439C45 for ; Wed, 28 Jan 2015 14:13:10 -0500 Received: by mail-we0-f173.google.com with SMTP id w62so22690250wes.4 for ; Wed, 28 Jan 2015 11:13:07 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=sender:message-id:date:from:user-agent:mime-version:to:cc:subject :references:in-reply-to:content-type:content-transfer-encoding; bh=Shp4VtQYmF/OtaWXvWnvtquY/WXjWfn15I4P5Ma/Shg=; b=AA/I1agrgP5myRySkzAFQLmu7/WRLuRChvxSGznxepHQfo7LDINnAEnM4snj+v3ZYI V6iMvwczUk49BDPDlKBQJz+UjAlPeaoquRvzALD6N+OZCQRoh5G8Mie94F1+gD/iFByR 3pzyCN3HBAbhcbWl4y63P1JNUEzCikIDWTMzewDIhvJYZQKPiAkSRlWqj5ZB9tfmsjQF 9K+fb7HLw3+tp1qC0/IHPuXc6WeOOkCFzlyQmNMUnk/3caDloDHoZm2apt59ahlHUJKs BaH3f07vKWRSdIdqs+XGdvn/V46u4+TyJzKG2U03pQB6wtd4IlveWvffYy6JQxORjd7v nnsg== X-Received: by 10.194.92.114 with SMTP id cl18mr10176198wjb.119.1422472387269; Wed, 28 Jan 2015 11:13:07 -0800 (PST) Received: from [192.168.2.120] (89-104-28-113.customer.bnet.at. [89.104.28.113]) by mx.google.com with ESMTPSA id w3sm7325220wjf.3.2015.01.28.11.13.06 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 28 Jan 2015 11:13:06 -0800 (PST) Sender: Michael Wallner Message-ID: <54C934C1.6080601@php.net> Date: Wed, 28 Jan 2015 20:13:05 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.4.0 MIME-Version: 1.0 To: Andrea Faulds , Levi Morrison CC: PHP Internals References: <54C8D36E.7010803@php.net> <584E167F-CD06-4ACB-A33A-92DD178BCFD8@ajf.me> In-Reply-To: <584E167F-CD06-4ACB-A33A-92DD178BCFD8@ajf.me> Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Subject: Re: [PHP-DEV] [RFC] [VOTE] pecl_http From: mike@php.net (Michael Wallner) On 28/01/15 19:03, Andrea Faulds wrote: > Hi Levi, > >> On 28 Jan 2015, at 17:58, Levi Morrison wrote: >> >> Oh, one more item: has anyone had time to review the pieces and how >> they all interact, as well as reviewing the quality of each >> component? I should hardly think in the time given this has been >> done. I'm not saying this extension is bad; I am saying that I >> don't think there's been time for anyone to properly evaluate >> whether it is or not. > > Related to that: I should have asked about the size. By the looks of > things pecl/http is a pretty big extension that covers an awful lot > of functionality. The RFC’s lack of rationale for adding the > extension is bad enough, but the size of the extension makes it > worse. It’s a lot of classes (28 in total), so I think the RFC really > needs a strong case to add all these different modules. Not only does > the RFC need an overall rationale, but each module probably needs its > own rationale: how does it compare to PHP’s existing functions for > that feature, etc.? Yes, it's huge, but mostly only because PHP, the web language, lacks in all of those areas. A quick overview of the top namespace: - Client The http stream wrapper is a hack and the existing libcurl binding is subpar. They could be improved separately, but that is not subject of this RFC. Currently only libcurl is implemented as a provider for the client functionality. Provides most of the functionality of current libcurl. Representation of the request and response how a client sees them. Support for parallel requests and optional libev{,ent} support. - Cookie Parses Cookie and Set-Cookie header values. Actually builds on http\Params. - Encoding Streamable implementations of chunked, zlib/gzip/deflate encodings. - Env Negotiation facilities, representations of the request and response how the server sees them. Support for range requests and caching by etag/last-modified. - Header Header parser and tools. - Message Message parser and tools. Also message bodies with support for building and parsing multipart bodies. - Params Header params parser; think of a content-type or an accept header. - QueryString Query string parser and tools. Actually builds on http\Params. - Url URL parser and tools (actually discovered today, that it leans towards IRIs) -- Regards, Mike