실제 PHP 웹 개발 프레임 워크 인 Swoole에 대해 알고 계십니까? !

1. Swoole 프레임 워크 소개

Swoole은 개발 효율성을 효과적으로 향상시키는 매우 정교한 PHP 프레임 워크입니다. Swoole에는 데이터베이스, 템플릿 엔진, 캐시 시스템, 로그 시스템, 이벤트 처리 시스템 등과 같이 일반적으로 사용되는 일부 개체를 탑재하는 Java 등록 트리와 유사한 통합되고 고유 한 전역 개체가 있습니다. 쉽게 함수를 호출하고 빠르게 개발할 수 있습니다. swoole 프레임 워크를 사용하려면 config.php 파일 만 구성하면되며 다른 PHP 파일에서는 프레임 워크의 모든 기능을 호출하는 데 필요한 config.php 파일 만 있으면됩니다.

Swoole은 구성 파일을 통해 모듈 드라이브 모드를 쉽게 교체 할 수 있습니다. 예를 들어 Pdo MySQL MySQLi간에 데이터베이스 연결을 쉽게 변경할 수 있습니다. 캐시는 filecache, dbcache 또는 memcache를 사용할 수 있습니다. 로그는 데이터베이스 로그, 시스템 로그 또는 파일 로그를 사용할 수 있습니다.

암호:

<?php  
require 'config.php';  
//自动加载模块  
$php->autoload('db','tpl','cache','log','event','upload');  
//数据库查询  
$res = $php->db->query('select * from test');  
$one = $res->fetch();  
$all = $res->fetchall();  
//日志  
$php->log->info('hello');  
//缓存  
$php->cache->get('cache_key');  
$hello = $php->cache->set('cache_key','me',1800);  
//模板  
$php->tpl->assign('hello',$hello);  
$php->tpl->display('index.html');  

Swoole은 많은 라이브러리 도구, 양식 생성, 입력 확인 및 필터링, 로그인 확인 처리, JS 생성, Ajax 지원, 디버깅 도구, 클라이언트 작업, URL 병합 및 분할 도구 등을 제공합니다.

또한 네트워크 클래스 (TCP, UDP Server & Client of Block, Select, Event)도 제공되며 일부 간단한 서버 프로토콜 구현 (HTTP, Chat, FTP, SMTP, POP3 등)도 제공됩니다. 2 개의 js 라이브러리, UI 라이브러리 및 양식 유효성 검사도 있습니다.

두 가지 고급 애플리케이션

Swoole 프레임 워크는 MVC 앱 구조도 제공합니다. 컨트롤러의 상속을 통해 비즈니스 로직의 캡슐화가 실현되고 모델의 상속이 실현되며 데이터 연산의 캡슐화가 실현됩니다. 뷰 레이어는 스마트 템플릿 엔진을 사용하여 페이지 디스플레이의 로직 캡슐화를 구현합니다.

Swoole 프레임 워크는 데이터베이스를 쉽게 추가, 삭제 및 수정할 수있는 get, gets, set, sets, del, dels, put과 함께 강력한 Model 클래스를 제공하며, get 인터페이스에는 자동 페이징 기능도 있습니다.

Swoole의 SQL 캡슐화는 매우 유연합니다. 그 특징은 모든 SQL 스 플라이 싱이 객체 메서드 대신 배열을 사용하므로 데이터베이스 쿼리 매개 변수가 PHP의 $ _GET, $ _POST, $ _SESSION, Cache 및 Cookie와 원활하게 통합 될 수 있다는 것입니다. .

암호:

<?php  
$model = createModel('TestModel');  
$gets['where'][] = 'id>1';  
$gets['order'] = 'id desc';  
$gets['limit'] = 10;  
$gets['where'][] = 'category=10';  
$gets['select'] = 'id,title,name'];  
$gets['leftjoin'].  
  
$data = $model->gets($gets);  

Swoole에는 ORM 데이터베이스 운영 방법도 있으며 개발 매뉴얼을 참조 할 수 있습니다.

Swoole MVC URL 라우팅 방식은 사용자가 제공하는 함수로 완료되며, 사용자 함수는 어떤 Controller가 호출되었는지 반환하기 만하면됩니다. URL 재 작성을 사용하면 / controller / action /, controller_action.do, controller / action.do 등과 같은 모든 URL 스키마를 사용자 정의 할 수 있습니다. 또는 일반 규칙을 사용하여 Django와 같은 URL을 지정하십시오.

행사

Swoole은 이벤트 트리거 시스템을 제공합니다.

$ php-> event-> raise ( 'sendsms', $ mobile, $ sms_content);

이것은 멋진 디자인입니다. 로컬 테스트 환경에서 동기화하도록 구성하면 일정 시간 동안 상승이 트리거 된 후 이벤트에 해당하는 핸들 기능이 실행됩니다. 서버 환경 인 경우 비동기로 설정할 수 있으며 raise는 이벤트를 Queue 서버에만 전달합니다. 백그라운드에서 데몬을 시작하고 큐 서버에서 이벤트를 가져온 다음 핸들 기능을 사용하여 처리합니다.

업로드

Swoole은 업로드 된 파일을 균일하게 처리하고 업로드 크기를 제한 할 수 있습니다. 사진을 업로드 할 때 사진 크기를 자동으로 압축하여 썸네일을 생성 할 수 있습니다.

세, 배포 방법 및 스트레스 테스트

Swoole 프레임 워크는 일반 PHP와 같은 일반적인 LAMP 환경에 배포 할 수 있습니다. 또한 Swoole 자체에서 제공하는 Http 서버 모드에서 실행할 수 있습니다.

일반 LAMP 모드는 각 요청에 더 많은 php 파일이 포함되어 있으므로 APC와 같은 OPCode 캐시를 설치하는 것이 가장 좋습니다. 스트레스 테스트, 동일한 코드, 실행 효율성은 thinkphp보다 약간 낮지 만 CodeIgniter를 거의 두 배 능가합니다.

서버 모드에서 실행되는 Swoole은 매우 강력한 성능을 가지고 있습니다. 동일한 코드 Apache 배포 환경에서보다 거의 8-14 배입니다. 그리고 메모리 사용량은 매우 적습니다.

암호:

<?php  
require('config.php');  
define('SESSION_CACHE','file://localhost#sess');  
require(LIBPATH.'/function/cli.php');  
//Mime格式  
require(LIBPATH.'/data/mimes.php');  
$mime_types = array_flip($mimes);  
//静态文件许可  
$static_files = array_flip(array('static','templates','swoole_plugin','favicon.ico','robot.txt'));  
$static_access = array_flip(array('html','htm','jpg','gif','png','js','css'));  
//加载全部controller  
import_all_controller();  
  
$_SERVER['run_mode'] = 'server';  
$_SERVER['server_driver'] = 'SelectTCP'; //BlockTCP,EventTCP,SelectTCP  
$_SERVER['server_host'] = '0.0.0.0';  
$_SERVER['server_port'] = 8888;  
$_SERVER['server_processor_num'] = 4;   //启用的进程数目  
$_SERVER['session_cookie_life'] = 86400; //保存SESSION_ID的cookie存活时间  
$_SERVER['session_life'] = 1800;  
  
$php->runServer();  

테스트 코드 :

PHP 코드

<?php  
class page extends Controller  
{
    
      
    function index()  
    {
    
      
        $data = createModel('UserInfo')->get(12)->get();  
        $this->swoole->tpl->assign('data',$data);  
        $html = $this->swoole->tpl->fetch('test.html');  
        $time = $this->showTime();  
        return $html.$time;  
    }  
}  

쉘 코드

ab -c 100 -n 1000 -k http://127.0.0.1:8888/page/index/  
  
Requests per second  
Time per request (mean)  
Time per request (mean, across all concurrent requests)  

여기에 사진 설명 삽입

내 Ubuntu (Inter core E5300 + 2G 메모리 및 ecilpse, firefox, chrom을 실행하는 다른 소프트웨어가 있음)에서 테스트되었습니다. Apache는 80 RPS 이상으로 만 실행되었습니다. 4 프로세스 Swoole Server는 실제로 놀라운 1153RPS로 실행되었습니다.

프록시 배포 및 부하 분산을 위해 apache ProxyPass 또는 Nginx 업스트림을 사용할 수 있습니다.

집중 해 길을 잃지 마

자, 여러분, 위는이 글의 전체 내용입니다. 여기서 볼 수있는 사람은 모두 재능 입니다. 앞서 말했듯이 PHP에는 기술적 인 점이 많이 있습니다. 너무 많아서 쓰기가 정말 불가능하고, 작성한 후 너무 많이 읽지 않기 때문에 필요한 경우 여기에 PDF와 문서로 정리하겠습니다. 할 수있다

비밀 코드를 입력하려면 클릭하세요 : PHP + 「Platform」

여기에 사진 설명 삽입

여기에 사진 설명 삽입


더 많은 학습 내용을 보려면 [Comparative Standard Factory] 우수한 PHP 아키텍트 튜토리얼 카탈로그 를 방문 하여 급여가 한 단계 올라갈 수 있도록 읽어보세요 (지속적인 업데이트).

위의 내용이 도움이되기를 바랍니다 . 많은 PHP 사용자 가 고급 단계에서 항상 몇 가지 문제와 병목 현상에 직면 합니다 . 너무 많은 비즈니스 코드를 작성하면 방향 감각이 없습니다. 어디에서 개선해야할지 모르겠습니다. 다음과 같은 몇 가지 정보를 수집했습니다. 하지만 이에 국한되지는 않습니다 : 분산 아키텍처, 높은 확장 성, 고성능, 높은 동시성, 서버 성능 튜닝, TP6, laravel, YII2, Redis, Swoole, Swoft, Kafka, Mysql 최적화, 쉘 스크립트, Docker, 마이크로 서비스, Nginx 등. 많은 지식 포인트, 고급 고급 건조 제품을 모든 사람과 무료로 공유 할 수 있으며 필요한 사람들은 내 PHP 기술 교환 그룹에 가입 할 수 있습니다.

추천

출처blog.csdn.net/weixin_49163826/article/details/108830628