| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 | <?phpuse Workerman\Worker;use Workerman\Protocols\Http\Request;use Workerman\Protocols\Http\Response;use Workerman\Connection\TcpConnection;include __DIR__ . '/vendor/autoload.php';// 启动一个webserver,用于吐html css js,方便展示// 这个webserver服务不是必须的,可以将这些html css js文件放到你的项目下用nginx或者apache跑$context = array(    'ssl' => array(        'local_cert'  => '/www/wwwroot/1.wepolicy.cn/msg/erp.crt',        'local_pk'    => '/www/wwwroot/1.wepolicy.cn/msg/erp.key',        'verify_peer' => false,    ));$web = new Worker('http://0.0.0.0:2123',$context);$web->transport = 'ssl';$web->name = 'web';define('WEBROOT', __DIR__ . DIRECTORY_SEPARATOR . 'web');$web->onMessage = function (TcpConnection $connection, Request $request) {    $path = $request->path();    if ($path === '/') {        $connection->send(exec_php_file(WEBROOT.'/index.html'));        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();}if(!defined('GLOBAL_START')){    Worker::runAll();}
 |