Basic Usage: Server

server 模式是给你提供 web 请求处理的一种方式,HHVM 进程启动之后会持续地监听并处理 web 请求。

当然了,HHVM 是可以同时处理并发请求的,并且 HHVM 会缓存你的代码,不同的请求都可以共享到这个缓存。

下面是启动 HHVM server 模式最简单的例子。

% hhvm -m server -p 8080

-m模式 选项,默认是 命令行模式

-p 是 HHVM 监听的端口,默认是 80。

你执行 hhvm 命令的目录将会作为你代码文件的根目录。

自定义配置

-d 可以覆盖命令行配置中的选项

在上面的例子中,默认使用的是 HHVM 内置的 proxygen 作为 web server 来监听 8080 端口。

我们可以删除 -p 8080 并显式追加下面的内容到上面的命令:

-d hhvm.server.type=proxygen -d hhvm.server.port=8080 -d hhvm.server.source_root=./

尽管将命令写这么详细实现的目的跟之前一样,但这么做也可能有一定的道理(译者注:比如 ini 里的默认配置被修改过了,你就需要显式指定相应的参数)。除此之外,你也可以用 -d 来自定义其他各种设置

HHVM 也会继续使用 server.ini (大多数 Linux 环境中在 /etc/hhvm/,macOS 中在 /usr/local/etc/hhvm/)中默认的配置。

客户端访问 server 模式下的 HHVM

通常情况下,一个 web 请求是长下面这样的:

http://your.site:8080/index.php

你可以用 curl 或者其他程序来访问 HHVM 服务端。

Possible Fatal Error

如果你运行的是 Hack (<?hh>) 代码,并且你得到了一个 由于没有运行类型检查器导致的致命错误,那你需要做以下的任一操作:

  • 创建一个名为 .hhconfig 的空文件在你的代码根目录中
  • hhvm -m server... 命令后面加上 -d hhvm.hack.lang.look_for_typechecker=0

本节由 Y!an 翻译