使用nodejs,可以非常轻松地创建非阻塞TCP服务器.nodejs.org的示例:
var net = require('net');
var server = net.createServer(function (socket) {
socket.write("Echo server\r\n");
socket.pipe(socket);
});
server.listen(1337, "127.0.0.1")
Run Code Online (Sandbox Code Playgroud)
nodejs为你处理select() - /poll() - /epoll()的东西,socket例程和主循环用C实现,所以它非常快速有效.
nodejs很棒,但我想在PHP中实现一个高性能的TCP套接字服务器,因为我是一个PHP人:)
所以,有一件事我已经尝试过,是落实在PHP中的socket例程,使用socket_create_listen,socket_accept,socket_select等,并在PHP主循环.这非常有效,但我认为它不是非常有效,因为我必须使用内部socket_select调用C函数select,但epoll我认为(我使用Linux)会更好,但epoll不能用作PHP函数.(phpsocketdaemon和phpmio是我发现的为你实现套接字例程的2个项目).
是否有可能以nodejs的方式做到这一点?我正在考虑一个在C中实现循环和套接字例程的PHP模块,并为事件(onread,onerror..)调用PHP回调函数.还是不值得努力?
我无法弄清楚如何在使用composer进行自举时运行zf.php(Zend Framework 2 Tool).
首先我根据文档引导作曲家和zftool:
$ mkdir tmp && cd tmp
$ curl -s https://getcomposer.org/installer | php
$ ./composer.phar require zendframework/zftool:dev-master
Run Code Online (Sandbox Code Playgroud)
这到目前为止工作正常.
但是当我尝试运行zf.php时,我收到错误:
$ vendor/zendframework/zftool/zf.php
PHP Warning: require_once(/Users/seb/tmp/vendor/zendframework/zftool/vendor/autoload.php): failed to open stream: No such file or directory in /Users/seb/tmp/vendor/zendframework/zftool/zf.php on line 13
Warning: require_once(/Users/seb/tmp/vendor/zendframework/zftool/vendor/autoload.php): failed to open stream: No such file or directory in /Users/seb/tmp/vendor/zendframework/zftool/zf.php on line 13
PHP Fatal error: require_once(): Failed opening required '/Users/seb/tmp/vendor/zendframework/zftool/vendor/autoload.php' (include_path='.:/opt/local/lib/php') in /Users/seb/tmp/vendor/zendframework/zftool/zf.php on line 13
Fatal error: require_once(): Failed opening required '/Users/seb/tmp/vendor/zendframework/zftool/vendor/autoload.php' (include_path='.:/opt/local/lib/php') …Run Code Online (Sandbox Code Playgroud)