Download the PHP package xp-forge/web without Composer
On this page you can find all versions of the php package xp-forge/web. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Package web
Short Description Web applications for the XP Framework
License BSD-3-Clause
Homepage http://xp-framework.net/
Informations about the package web
Web applications for the XP Framework
Low-level functionality for serving HTTP requests, including the xp web
runner.
Example
Run it using:
Supports a development webserver which is slower but allows an easy edit/save/reload development process. It uses the PHP development server in the background.
Now open the website at http://localhost:8080/hello
Server models
The four server models (selectable via -m <model>
on the command line) are:
- async (the default since 3.0.0): A single-threaded web server. Handlers can yield control back to the server to serve other clients during lengthy operations such as file up- and downloads.
- sequential: Same as above, but blocks until one client's HTTP request handler has finished executing before serving the next request.
- prefork: Much like Apache, forks a given number of children to handle HTTP requests. Requires the
pcntl
extension. - develop: As mentioned above, built ontop of the PHP development wenserver. Application code is recompiled and application setup performed from scratch on every request, errors and debug output are handled by the development console.
Request and response
The web.Request
class provides the following basic functionality:
The web.Response
class provides the following basic functionality:
Both Request and Response have a stream()
method for accessing the underlying in- and output streams.
Handlers
A handler (also referred to as middleware in some frameworks) is a function which receives a request and response and uses the above functionality to handle communication.
This library comes with web.handler.FilesFrom
- a handler for serving files. It takes care of conditional requests (with If-Modified-Since) as well requests for content ranges, and makes use of the asynchronous capabilities if available, see here.
Filters
Filters wrap around handlers and can perform tasks before and after the handlers are invoked. You can use the request's pass()
method to pass values - handlers can access these using value($name)
/ values()
.
By using yield from
, you guarantee asynchronous handlers will have completely executed before the time measurement is run on in the finally
block.
File uploads
File uploads are handled by the request's multipart()
method. In contrast to how PHP works, file uploads are streamed and your handler starts running with the first byte transmitted!
Early hints
An experimental status code with which headers can be sent to a client early along for it to be able to make optimizations, e.g. preloading scripts and stylesheets.
See https://evertpot.com/http/103-early-hints
Internal redirects
On top of external redirects which are triggered by the 3XX status codes, requests can also be redirected internally using the dispatch()
method. This has the benefit of not requiring clients to perfom an additional request.
Logging
By default, logging goes to standard output and will be visible in the console the xp web
command was invoked from. It can be influenced via the command line as follows:
-l server.log
: Writes to the file server.log, creating it if necessary-l -
: Writes to standard output-l - -l server.log
: Writes to both of the above
More fine-grained control as well as integrating with the logging library can be achieved from inside the application, see here.
Performance
Because the code for the web application is only compiled once when using production servers, we achieve lightning-fast request/response roundtrip times:
See also
This library provides for the very basic functionality. To create web frontends or REST APIs, have a look at the following libraries built ontop of this:
All versions of web with dependencies
xp-framework/networking Version ^10.1 | ^9.3
xp-forge/uri Version ^3.0 | ^2.0 | ^1.4
php Version >=7.0.0