airship icon indicating copy to clipboard operation
airship copied to clipboard

Non-Blocking I/O Servers Support ( Swoole, ReactPHP, Amp ... etc )

Open azjezz opened this issue 6 years ago • 4 comments

i intend to follow up with PR next week, first i have some questions :

  • does AirShip uses any global variables ? ( $_COOKIES, $_POST, $_GET ... etc)
  • does AirShip uses any HTTP related function ? ( e.g: header(), setcookie() ... etc )
  • does AirShip uses PHP Session Extension functions ? ( e.g: session_start() ... etc )

for this i suggest having 1 class AirShip\Networking\Server and multiple drivers ( e.g : AirShip\Networking\Server\Driver\SwooleDriver, AirShip\Networking\Server\Driver\AmpDriver .. etc )

azjezz avatar Nov 16 '18 22:11 azjezz

this is an issue

i think first we need few changes before supporting Swoole or any other non-blocking IO server ( such ReactPHP or Amp ) :

  1. new session interface instead of ParagonIE\Cookie\Session
  2. use dflydev/fig-cookies instead of ParagonIE\Cookie\Cookie
    • we can build a wrapper around this for encryption by example
  3. PSR-15 support :
    • MIDDLEWARES ARE COOL !
    • clean the mess in public/index.php
      • error handling and enabling debug can be done in an early middleware
  4. PSR-6 support :

what do you think @paragonie-scott

azjezz avatar Nov 16 '18 22:11 azjezz

@azjezz how would you envision async support as no part of airship is build with non blocking support in mind?

PeeHaa avatar Nov 27 '18 23:11 PeeHaa

@PeeHaa the only problem i currently see is the usage of global variables and the session extension, but for now I'm waiting for @paragonie-scott opinion on this.

the usage of global variables $_GET and $_POST can be avoided by using the PSR7 request, $_COOKIES can be avoided by using dflydev/fig-cookies instead of ParagonIE\Cookie\Cookie and we need a new session implementation, one that doesn't use the session extension, something like this : zendframework/zend-expressive-session-cache

azjezz avatar Nov 28 '18 00:11 azjezz