server.php 980 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. <?php
  2. require_once __DIR__.'/vendor/autoload.php';
  3. use Workerman\Worker;
  4. use Workerman\Timer;
  5. $test_type = getenv('TEST_TYPE') ?: 'default';
  6. if ($test_type === 'pgsql') {
  7. require_once __DIR__.'/app-pg.php';
  8. } else {
  9. require_once __DIR__.'/app.php';
  10. }
  11. $process_count = (int) shell_exec('nproc') * ($test_type === 'default' ? 1 : 4);
  12. $http_worker = new Worker('http://0.0.0.0:8080');
  13. $http_worker->reusePort = true;
  14. $http_worker->count = $process_count;
  15. $http_worker->onWorkerStart = static function () use ($test_type) {
  16. Header::$date = gmdate('D, d M Y H:i:s').' GMT';
  17. Timer::add(1, function() {
  18. Header::$date = gmdate('D, d M Y H:i:s').' GMT';
  19. });
  20. if ($test_type === 'pgsql') {
  21. DbRaw::init();
  22. } else {
  23. init();
  24. }
  25. };
  26. $http_worker->onMessage = static function ($connection, $request) {
  27. $connection->send(router($request));
  28. };
  29. Worker::runAll();
  30. class Header {
  31. public static $date = null;
  32. }