1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- <?php
- /**
- * This file is part of workerman.
- *
- * Licensed under The MIT License
- * For full copyright and license information, please see the MIT-LICENSE.txt
- * Redistributions of files must retain the above copyright notice.
- *
- * @author walkor<walkor@workerman.net>
- * @copyright walkor<walkor@workerman.net>
- * @link http://www.workerman.net/
- * @license http://www.opensource.org/licenses/mit-license.php MIT License
- */
- require_once __DIR__.'/../../vendor/workerman/workerman/Worker.php';
- use Workerman\Worker;
- use Workerman\Protocols\Http\Request;
- use Workerman\Protocols\Http\Response;
- use Workerman\Connection\TcpConnection;
- require_once __DIR__ . '/../../vendor/autoload.php';
- // WebServer
- $web = new Worker("http://0.0.0.0:55151");
- // WebServer进程数量
- $web->count = 2;
- define('WEBROOT', __DIR__ . DIRECTORY_SEPARATOR . 'Web');
- $web->onMessage = function (TcpConnection $connection, Request $request) {
- $_GET = $request->get();
- $path = $request->path();
- if ($path === '/') {
- $connection->send(exec_php_file(WEBROOT.'/index.php'));
- return;
- }
- $file = realpath(WEBROOT. $path);
- if (false === $file) {
- $connection->send(new Response(404, array(), '<h3>404 Not Found</h3>'));
- return;
- }
- // Security check! Very important!!!
- if (strpos($file, WEBROOT) !== 0) {
- $connection->send(new Response(400));
- return;
- }
- if (\pathinfo($file, PATHINFO_EXTENSION) === 'php') {
- $connection->send(exec_php_file($file));
- return;
- }
- $if_modified_since = $request->header('if-modified-since');
- if (!empty($if_modified_since)) {
- // Check 304.
- $info = \stat($file);
- $modified_time = $info ? \date('D, d M Y H:i:s', $info['mtime']) . ' ' . \date_default_timezone_get() : '';
- if ($modified_time === $if_modified_since) {
- $connection->send(new Response(304));
- return;
- }
- }
- $connection->send((new Response())->withFile($file));
- };
- function exec_php_file($file) {
- \ob_start();
- // Try to include php file.
- try {
- include $file;
- } catch (\Exception $e) {
- echo $e;
- }
- return \ob_get_clean();
- }
- // 如果不是在根目录启动,则运行runAll方法
- if(!defined('GLOBAL_START'))
- {
- Worker::runAll();
- }
|