/**
  * Sending back a response to mongrel2 webserver.
  *
  * @param Request $request
  * @param Response $response
  */
 private function sendResponseToMongrel(Request $request, Response $response)
 {
     $response->prepare($request);
     // Map back our Symfony Response to a MongrelResponse.
     $mongrelResponse = new MongrelResponse($request->attributes->get('mongrel2_uuid'), [$request->attributes->get('mongrel2_listener')]);
     $mongrelResponse->setContent($response->getContent());
     $headers = $response->headers->all();
     foreach ($response->headers->getCookies() as $cookie) {
         $headers['Set-Cookie'][] = $cookie;
     }
     $mongrelResponse->setHeaders($headers);
     $mongrelResponse->setHttpVersion($response->getProtocolVersion());
     $mongrelResponse->setStatusCode($response->getStatusCode());
     $mongrelResponse->setReasonPhrase(Response::$statusTexts[$response->getStatusCode()]);
     $this->handler->sendResponse($mongrelResponse);
 }
예제 #2
0
파일: handler.php 프로젝트: h4cc/mongrel2
<?php

use h4cc\Mongrel2\Handler;
use h4cc\Mongrel2\Transport;
use h4cc\Mongrel2\Response;
require_once __DIR__ . '/../vendor/autoload.php';
$recv = 'tcp://127.0.0.1:9997';
$send = 'tcp://127.0.0.1:9996';
$handler = new Handler(new Transport($recv, $send));
while (true) {
    $request = $handler->receiveRequest();
    $response = new Response($request->getUuid(), [$request->getListener()]);
    $response->setContent('<pre>
Request: ' . print_r($request, true) . '
Response:' . print_r($response, true) . '
    </pre>');
    $handler->sendResponse($response);
}