FIRST TOUCH-20170308-Swoole+Nginx+Redis(慢慢补)
来源:互联网 发布:人工智能行业入门 编辑:程序博客网 时间:2024/06/14 07:56
引入
小贤贤
Swoole之于PHP正如Node.js之于JavaScript.
韩天峰
PHP的确有很多局限性,比如Unix系统编程、网络通信编程、异步io,Swoole开源项目就是为了弥补PHP在这些方面的缺陷诞生的。Swoole实际上是一个网络通信和异步io的引擎,一个基础库。PHPer可以基于swoole去实现过去PHP无法实现的功能。
Swoole到底是个什么东西?
More
为什么选择swoole?
与Golang/Node.js/Erlang/php+libevent比较,swoole是整体方案。从性能、异步、并行、可维护性、开发效率方面综合考虑的。swoole中你可以同步,也可以异步。代码中可以有阻塞,通过多开进程来调整处理能力。
swoole与phpdaemon/reactphp/workerman等纯PHP网络库的差异
通过压测也能发现,纯C的swoole写一个EchoServer,做-c 500 -n 100000的测试中,CPU始终在5%-10%之间。而PHP实现的PSF网络Server框架,CPU占用率高达70%-90%。
Start
Swoole 教程
swoole目前已被多家移动互联网、物联网、网络游戏、手机游戏企业使用,替代了C++、Java等复杂编程语言来实现网络服务器程序。 使用PHP+Swoole,开发效率可以大大提升。官方提供了基于swoole扩展开发的PHP网络框架, 支持Http,FastCGI,WebSocket,FTP,SMTP,RPC等网络协议 swoole在美国,英国,法国,印度等国家都有用户分布,在国内的 腾讯、百度、阿里巴巴、YY语音等多家知名互联网公司均有使用。
Swoole Open Source Project
GitBook: Easy Swoole
安装-为PHP添加swoole异步并行扩展 - lianche
sudo apt-get install php7.0sudo apt-get install php-devsudo apt-get install php-pearsudo pecl install swoole# 定位 php.ini => # find / -name php.ini# 或者 phpinfo() 中找 load_configuration_file() 对应的内容# vi /etc/php/php.iniextension=swoole.so
# client-server 模式# client<?php $client = new swoole_client(SWOOLE_SOCK_TCP, SWOOLE_SOCK_ASYNC); $client->on("connect", function($cli) { $cli->send("hello world\n"); }); $client->on("receive", function($cli, $data){ echo "Receive: $data\n"; }); $client->on("error", function($cli){ echo "connect fail\n"; }); $client->on("close", function($cli){ echo "close\n"; }); $client->connect('127.0.0.1', 9501, 0.5);?># server<?php $serv = new swoole_server("0.0.0.0", 9501); $serv->on('connect', function ($serv, $fd){ echo "Client:Connect.\n"; }); $serv->on('receive', function ($serv, $fd, $from_id, $data) { $serv->send($fd, 'Swoole: '.$data); }); $serv->on('close', function ($serv, $fd) { echo "Client: Close.\n"; }); $serv->start();?># 永久定时,循环定时<?php $str = "Say "; $timer_id = swoole_timer_tick( 1000 , function($timer_id , $params) use ($str) { echo $str . $params; // 输出“Say Hello” } , "Hello" );?># 临时定时,一次结束<?php class Test { private $str = "Say Hello"; public function onAfter() { echo $this->str; // 输出”Say Hello“ } } $test = new Test(); swoole_timer_after(1000, array($test, "onAfter"); // 成员变量 swoole_timer_after(2000, function() use($test){ // 闭包 $test->onAfter(); // 输出”Say Hello“ });?>
sudo apt-get install gitgit clone https://github.com/swoole/framework.gitsudo apt-get install mysql-server mysql-clientsudo apt-get install php7.0-mysqlsudo apt-get install nginx
Ubuntu/CentOS 系统上安装与配置Nginx
1. 服务地址:/etc/init.d/nginx
2. 配置地址:/etc/nginx/ 如:/etc/nginx/nginx.conf
3. Web默认目录:/usr/share/nginx/http/ 如:usr/share/nginx/index.html
4. 日志目录:/var/log/nginx/ 如:/var/log/nginx/access.log
5. 主程序文件:/usr/sbin/nginx
php index.php
运行正常,而在 web 环境下直接访问该网址时,出现 nginx 不解析 php 文件,而是直接下载 php 文件的情况。
测试 nginx.conf nginx -t -c /etc/nginx/nginx.conf
,出现报错:
2017/03/07 22:29:59 [emerg] 87843#87843: "fastcgi_pass" directive is duplicate in /etc/nginx/sites-enabled/default:57
解决方案:
解决安装nginx 日志文件出现”fastcgi_pass” directive is duplicate 错误
修改 /etc/nginx/sites-available/default,如下:(中间绕了好大的坑–兜兜转转,最后终于知道–文档有多坑。。好端端的项目,为什么文档为什么写成这样?!)
server { listen 80; server_name _; root /var/www/html/test/static; location / { if (!-e $request_filename){ proxy_pass http://127.0.0.1:9501; } }}
就是这个地方==。。神坑!是官方改 app_server.php 文件位置了,还是我的理解问题。有毒!
php /var/www/html/test/examples/app_server.php start -d
今天先写到这里。。
- FIRST TOUCH-20170308-Swoole+Nginx+Redis(慢慢补)
- 计算机网络基础知识整理(慢慢补全。)
- FIRST TOUCH
- FIRST TOUCH
- 2016 Multi-University Training Contest 1 题解(慢慢补)
- 2016 Multi-University Training Contest 2 题解(慢慢补)
- NHIBERNATE查询-慢慢补吧
- swoole & redis实现 Rest api
- swoole和redis异步任务
- Redis 高可用方案 Redis Sentinel(后期补)
- nginx和swoole高并发原理
- Your first MeeGo Touch application
- First touch of Ionic 2
- swoole+Redis实现实时数据推送
- swoole 异步redis客户端环境安装
- Swoole笔记(四)
- Swoole笔记(五)
- swoole安装(phpize)
- 合唱团
- TensorFlow从图像提取区域的函数
- codeforces Dima and Trap Graph
- openwrt学习笔记一_feeds update报错
- hexo+github教程之五:github配置专属域名
- FIRST TOUCH-20170308-Swoole+Nginx+Redis(慢慢补)
- hexo+github教程之Markdown工具-MarkdownPad
- 找到两个数的差为一个特定数
- OpenSSL之EVP(三)——EVP对称算法编程示例
- 写在开篇
- linux网络编程之inet_pton和inet_ntop函数
- 实现两个整数变量的互换(不借助其他变量)
- cerr和clog
- Thread-使用同步块来有效的减少同步范围,可以提高代码并发运行的效率。