<?php
use Workerman\Worker;
use Workerman\Connection\TcpConnection;
use Workerman\Protocols\Http\Request;
require_once __DIR__ . '/vendor/autoload.php';
// 创建一个 Worker 监听 2345 端口,使用 http 协议通讯
$http_worker = new Worker("http://0.0.0.0:2345");
// 启动 1 个进程对外提供服务
$http_worker->count = 1;
$http_worker->onWorkerStart = function ($worker) {
// 将 db 实例存储在全局变量中(也可以存储在某类的静态成员中)
global $a;
$a=0;
};
// 接收到浏览器发送的数据时回复 hello world 给浏览器
$http_worker->onMessage = function(TcpConnection $connection, Request $request)
{
global $a;
$a++;
// 向浏览器发送 hello world
$connection->send("hello world---$a");
};
// 运行 worker
Worker::runAll();
能否从计算机原理基础解释一下吗,我看 workman 文档说进程间的共享数据,可以用全局变量,或者管道,或者 redis 这样的存储工具,我声明了一个 global,该进程也是只有 1 个,读取$a 的时候,只会从$a 地址读取值,但是值每次都不是递增,实在想不通
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.