Gon*_*dez 26 php python nginx nonblocking node.js
我想写非阻塞应用程序.我使用apache2,但我正在阅读关于nginx及其在apache进程方面的优势.我正在考虑为nginx更改apache.我的问题是,是否可以使用php和nginx编写非阻塞的Web应用程序?
或者更好的想法尝试使用python,使用一些反向代理,如uwsgi或gunicorn与nginx?或者是学习nodejs的解决方案?
Ivo*_*Ivo 16
在PHP中编写非阻塞应用程序是可能的,但它可能不是最好的环境,因为它没有创建记住这一点!您可以使用过程控制库PCNTL对您的子进程进行相当不错的控制,但它显然不会为您提供与其他环境相同的易用性!
我不太了解python,但我个人建议你使用nodejs!这是一项相当新的技术,这是真的,但是那里的一切都是非阻塞的,它就是这样的!基本上你所拥有的是一个单独的线程(你可以在这个新闻版本中扩展你想要的)并且几乎所有东西(除非你告诉它做不同的事情)将是事件驱动的,留下空间继续进行流程队列预期!
Nodejs真的很容易学习,如果你偶然发现了Web应用程序,你知道javascript!它仍然没有大量记录,但有许多准备使用的模块,您可以立即下载和使用!
小智 7
据我所知,有几个库可用于构建非阻塞应用程序.
BTW:我是Skyray的作者,也是swoole的开发者之一.
我还没有看过pushpin,但是我正在写这个答案指向另一个支持PHP中非阻塞应用程序的框架:
它支持将服务器绑定到HTTP或WebSocket,并且可以通过HTTP(通过转发(使用proxy_pass)请求)与Nginx等Web服务器软件一起使用.您甚至可以在Web服务器中使用HTTPS并转发未加密的HTTPS.(缺少React中的SSL支持.)
似乎还没有FastCGI或UWSGI支持,至少在上游项目中没有.
该样式类似于编写node.js,您将PHP 5.3+闭包附加到事件,并在下面透明地使用非阻塞套接字.该网站上有很好的例子,所以我不会在这里重复,因为你没有特别要求用例.
更新:我刚看了一下图钉网站,它不是编写问题标题中所要求的非阻塞PHP应用程序的框架或工具.看起来它确实可以作为解决方案的一部分.
小智 6
Swoole是编写非阻塞php应用程序的不错选择
这是一个例子:
$fp = stream_socket_client("tcp://127.0.0.1:80", $code, $msg, 3);
$http_request = "GET /index.html HTTP/1.1\r\n\r\n";
fwrite($fp, $http_request);
swoole_event_add($fp, function($fp){
echo fread($fp, 8192);
swoole_event_del($fp);
fclose($fp);
});
swoole_timer_after(2000, function() {
echo "2000ms timeout\n";
});
swoole_timer_tick(1000, function() {
echo "1000ms interval\n";
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6299 次 |
| 最近记录: |