appserver-io/webserver

Multithreaded webserver for php written in php


README

Latest Stable Version Total Downloads License Build Status Code Coverage Code Quality

Introduction

Are you serious? A web server written in pure PHP for PHP? Ohhhh Yes! :) This is a HTTP/1.1 compliant webserver written in php. And the best... it has a php module and it's multithreaded!

We use this in the appserver.io project as a server component for handling HTTP requests.

Installation

If you want to use the web server with your application add this

{
    "require": {
        "appserver-io/webserver": "dev-master"
    }
}

to your composer.json and invoke composer update in your project.

Usage

If you can satisfy the requirements it is very simple to use the webserver. Just do this:

git clone https://github.com/appserver-io/webserver
cd webserver
PHP_BIN=/path/to/your/threadsafe/php-binary bin/webserver

If you're using appserver.io the start line will be:

bin/webserver

Goto http://127.0.0.1:9080 and if all went good, you will see the welcome page of the php webserver. It will startup on insecure http port 9080 and secure https port 9443.

To test a php script just goto http://127.0.0.1:9080/info.php and see what happens... ;)

Additionally you can pass two arguments to the startup script. The first one is the path to a custom configuration file, the second one to a custom autoloader file. For example, if you want to use your own configuration and autoloader files start the webserver with

bin/webserver path/to/your/configuration.xml path/to/your/autoloader.php

Both files can be absolute or relative to the webserver's root directory.

Please be aware, that the autoloader MUST be able to load the webserver classes too, as it is not complementary but a replacement for the default composer autoloader.

Semantic versioning

This library follows semantic versioning and its public API defines as follows:

  • The public API, configuration and entirety of its modules
  • The public interface of the \AppserverIo\WebServer\ConnectionHandlers\HttpConnectionHandler class
  • The public interfaces within the \AppserverIo\WebServer\Interfaces namespace

External Links