当前位置:网站首页>[swoole series 2.1] run the swoole first
[swoole series 2.1] run the swoole first
2022-07-06 18:13:00 【Ma Nong Lao Zhang ZY】
The first Swoole Run
In the face of Swoole After having a preliminary impression , Today we will simply build Swoole Environment and run a simple Http service . Don't be too stressed , Today's content doesn't have much theoretical stuff , Prepare the running environment step by step , Can see Swoole The effect of running is ok .
Environmental preparation
Actually install Swoole Expansion is not troublesome , And others PHP Just extend the same installation process . But here's the thing ,Swoole It will conflict with some extensions , for instance XDebug、phptrace、aop、molten、xhprof、phalcon( The coroutine cannot run on phalcon In the frame ).
Everyone must be worried , Out of commission XDebug , Our debugging will be very troublesome ! No problem ,Swoole It also has its own recommended debugging tools , Interested partners can consult relevant information by themselves .
If you are Windows Environmental Science , Due to operating system differences , There is no direct dll Expansion packs can use . So in Windows In this environment, it is best to build a virtual machine , Then set the PHPStrom The synchronization of can be easily developed . I won't say more about this configuration , Baidu search a lot .
ad locum , I also installed it through virtual machine , The system environment is CentOS8、PHP8.1、Swoole4.8.3、MySQL8.0.27 It's all the latest , If you are PHP7 as well as Swoole4.4 If so, it's no problem , It won't make a big difference . Other tools , such as Nginx、Redis etc. , You can install it according to the situation , We will also use it in subsequent courses .
After the extension is successfully installed , stay php.ini Add extended information to the file , Then you can view it through the following command line Swoole Version information and extended configuration .
[[email protected] ~]# php --ri swoole
swoole
Swoole => enabled
Author => Swoole Team <[email protected]>
Version => 4.8.3
Built => Dec 7 2021 22:01:03
coroutine => enabled with boost asm context
epoll => enabled
eventfd => enabled
signalfd => enabled
cpu_affinity => enabled
spinlock => enabled
rwlock => enabled
zlib => 1.2.11
mutex_timedlock => enabled
pthread_barrier => enabled
futex => enabled
async_redis => enabled
Directive => Local Value => Master Value
swoole.enable_coroutine => On => On
swoole.enable_library => On => On
swoole.enable_preemptive_scheduler => Off => Off
swoole.display_errors => On => On
swoole.use_shortname => On => On
swoole.unixsock_buffer_size => 8388608 => 8388608
Start a service
I believe you guys have no problem installing the environment and extensions , If there's a problem , It's no use asking me , There are many metaphysics in compiling and installing these things ( Muddled ) The problem is , We can only practice with virtual machines . After the environment is installed successfully , Let's simply build a Http Service! .
what ? Start one directly Http service ? Not to use Nginx perhaps Apache Do you ? Forget what we said in the last article ,Swoole Start the service directly , Not like the traditional PHP Use FastCGI To start up php-fpm In this form . perhaps , You can also understand it as direct use Swoole The service started is php-fpm The one started in the form of connection 9000 Service of port .
About php-fpm Relevant knowledge , We were
understand PHP-FPM https://mp.weixin.qq.com/s/NUpDnfYfbPuWmal4Am3lsg
There are detailed instructions in , You can go back and have a look .
Okay , Let's get to the point , Start with a new file , Then enter the following code .
<?php
$http = new Swoole\Http\Server('0.0.0.0', 9501);
$http->on('Request', function ($request, $response) {
echo " Request received ";
$response->header('Content-Type', 'text/html; charset=utf-8');
$response->end('<h1>Hello Swoole. #' . rand(1000, 9999) . '</h1>');
});
echo " Service startup ";
$http->start();
Put it on Swoole In the system of the environment , Then execute the command-line script to run it .
[[email protected] source]# php 2.1 The first Swoole Run .php
Service startup
As soon as it runs, the command line stops , Obviously , Now the program has been mounted . Then we go to the browser to visit the page , If it's local , direct http://localhost:9501 That's all right. , If it's a virtual machine , Access to the virtual machine IP Address and add the port number . Be careful , If the access fails, you can check whether the firewall is turned off .
The result of visiting the page can be seen as the following screenshot .
meanwhile , The following content will also be output in the command line .
[[email protected] source]# php 2.1 The first Swoole Run .php
Service startup received request
congratulations , Yours Swoole There is no problem with the environment , Now the simplest Http The server has been set up successfully !
Next , Let's try to modify the contents of the file , Output information like above does not wrap , Let's add line breaks .
// .....
echo " Request received ", PHP_EOL;
// .....
echo " Service startup ", PHP_EOL;
Request page again , You will find that the output of the command line still does not wrap , Why is that ?
Remember the problem of dynamic language and static language we talked about in the last article , current Swoole In fact, it is already similar to the operation mode of static language . It has mounted the program as a separate process , In fact, this time is equivalent to having compiled a similar jar perhaps exe The file of , And it runs directly . therefore , Our modification of the file will not have any impact on the program in the current process . If you want to update the modified content , You need to restart the service . Now Ctrl+C Close the app first , Then execute the command line . You will see that the output will be wrapped .
[[email protected] source]# php 2.1 The first Swoole Run .php
Service startup
Request received
Request received
Request received
Request received
echo Why is it printed on the command line
I believe many students will have another question , Why? echo Output to the command line ? Conventional PHP In development , our echo It is directly output to the page ?
This is another Swoole Different from traditional development . stay Swoole in , Our service program is suspended using the command line , The code above actually implements a Http service function , Not through php-fpm To output to Nginx This kind of server . Think from a different angle ,php-fpm It just gives these outputs to the server program , Then the server program outputs it to the page as it is . But in Swoole in ,echo Such output streams directly send the results to the corresponding operating system stdout Yes . Correspondingly , Our service output is directly through Swoole On the service callback parameter in the code response Object to perform the service flow output process .
The thinking of this place needs to be changed . If you have Java Development should not be strange here , stay Swoole In the environment ,echo(print、var_dump() wait ) Such traditional output becomes Java Medium System.out.println() . Again , stay Java in , No matter what framework , You need to output the result value on the page , Also through a similar Response Object . Actually , Just output our printed content to different streams , Ordinary print flows to stdout On , and Response The object is through TCP Output the result to the response stream . The principle of this piece is very deep , At least we have to learn more about the network , Unfortunately, my current level is not up to , So interested partners should check the relevant information by themselves !
summary
Today's learning content is not much , The most important thing is that we first understand the simplest Http How service works , And the similarities and differences between the output and the traditional development mode . Of course , what's more , Now you have to prepare the development environment . Otherwise, the follow-up content cannot be practiced together .
Test code :
https://github.com/zhangyue0503/swoole/blob/main/2. Basics /source/2.1 The first Swoole Run .php
Reference documents :
https://wiki.swoole.com/#/environment
https://wiki.swoole.com/#/start/start_http_server
边栏推荐
- Excel usage record
- 转载:基于深度学习的工业品组件缺陷检测技术
- 《ASP.NET Core 6框架揭秘》样章发布[200页/5章]
- std::true_type和std::false_type
- Pytest learning ----- detailed explanation of the request for interface automation test
- QT中Model-View-Delegate委托代理机制用法介绍
- Scratch epidemic isolation and nucleic acid detection Analog Electronics Society graphical programming scratch grade examination level 3 true questions and answers analysis June 2022
- Olivetin can safely run shell commands on Web pages (Part 1)
- There is a gap in traditional home decoration. VR panoramic home decoration allows you to experience the completion effect of your new house
- Interview shock 62: what are the precautions for group by?
猜你喜欢
传输层 拥塞控制-慢开始和拥塞避免 快重传 快恢复
C language exchanges two numbers through pointers
It doesn't make sense without a distributed gateway
编译原理——预测表C语言实现
开源与安全的“冰与火之歌”
传统家装有落差,VR全景家装让你体验新房落成效果
Distiller les connaissances du modèle interactif! L'Université de technologie de Chine & meituan propose Virt, qui a à la fois l'efficacité du modèle à deux tours et la performance du modèle interacti
Is it meaningful for 8-bit MCU to run RTOS?
酷雷曼多种AI数字人形象,打造科技感VR虚拟展厅
Four processes of program operation
随机推荐
Grafana 9.0 正式发布!堪称最强!
Cool Lehman has a variety of AI digital human images to create a vr virtual exhibition hall with a sense of technology
10 advanced concepts that must be understood in learning SQL
Shell input a string of numbers to determine whether it is a mobile phone number
Compilation principle - top-down analysis and recursive descent analysis construction (notes)
VR全景婚礼,帮助新人记录浪漫且美好的场景
2022暑期项目实训(一)
Pytest learning ----- pytest operation mode and pre post packaging of interface automation testing
Awk command exercise
Compilation Principle -- C language implementation of prediction table
30 分钟看懂 PCA 主成分分析
STM32按键状态机2——状态简化与增加长按功能
传统家装有落差,VR全景家装让你体验新房落成效果
C语言通过指针交换两个数
编译原理——自上而下分析与递归下降分析构造(笔记)
Insert dial file of Jerry's watch [chapter]
Introduction to the usage of model view delegate principal-agent mechanism in QT
Jerry's setting currently uses the dial. Switch the dial through this function [chapter]
Scratch epidemic isolation and nucleic acid detection Analog Electronics Society graphical programming scratch grade examination level 3 true questions and answers analysis June 2022
Dichotomy (integer dichotomy, real dichotomy)