iankuca / node
此包已被弃用且不再维护。未建议替代包。
一个具有事件循环(类似node.js)的异步PHP框架
v0.0.4
2012-11-01 13:45 UTC
Requires
- php: >=5.3.0
This package is not auto-updated.
Last update: 2024-01-06 09:11:14 UTC
README
node.php
一个具有事件循环(类似node.js)的异步PHP框架
安装
首选方式是使用 composer。
{
"require": { "iankuca/node": "*" }
}
或者直接使用此仓库。
用法
$ php -f main.php yourfile.php
示例
超时
<?php echo "A"; setTimeout(function () { echo "C"; }, 2000); echo "B";
这将在2秒后打印AB
并添加C
。然后退出。
HTTP服务器
<?php $server = \Node\HTTP::createServer(function ($req, $res) { $res->writeHead(200, array( 'content-type' => 'text/plain; charset=UTF-8' )); $res->write('Hello world!'); $res->end(); }); $port = 8080; $server->listen($port, 'localhost'); console_log('The HTTP server is listening on port %d.', $port);
这将在端口8080上创建一个HTTP服务器。它将Hello world!
写入每个响应。它不会自行退出。
HTTP请求
<?php $options = array( 'host' => 'ifconfig.me', 'path' => '/ip' ); \Node\HTTP::request($options, function ($res) { console_log('status: %d', $res->status); print_r($res->headers); $res->on('data', function ($chunk) { echo $chunk; }); });
它向http://ifoconfig.me/ip
发出HTTP GET
请求,并在响应对象准备好时异步调用提供的回调函数。它等待响应体。然后退出。
标准输出将是…
status: 200
Array
(...)
XX.XX.XX.XX
目录列表
<?php \Node\FS::readdir('/tmp', function ($err, $files) { if ($err) throw $err; print_r($files); });
启动一个子进程ls -a /tmp
,并在完成后异步调用提供的回调函数。然后退出。
日志记录
由于进程的标准输出不送到浏览器,所以最终异常和警告在终端窗口中可见。原生的异常字符串化器相当糟糕,这就是为什么node.php包括它自己的错误格式化器。异常现在要友好得多
另一个新增功能是console_log()
函数,它基本上是一个带有添加换行符(\n
)的sprintf
,它将输出到标准输出。
console_log('%d + %d = %s', 1, 2, 'awesome'); // stdout: 1 + 2 = awesome