PHP高級Web開發框架 Swoole

openkk 12年前發布 | 58K 次閱讀 PHP Web框架

框架不是為了提升網站的性能,是為了提升網站的開發效率。最少的性能損耗,換取最大的開發效率。利用Swoole框架,開發一個復雜的Web功能,可以在很短的時間內完成!

Swoole有獨立特行的道!

Swoole 不是一個向Zend Framework、CakePHP、Yii、symfony、ThinkPHP等框架,或者WordPress、Drupal 、Discuz、UChome等開源產品看齊的項目。 Swoole的目標是向Java框架、Rails On Ruby、Python Django Pylons等一流框架發起挑戰。

新功能

Swoole可以獨立運行了。swoole代碼中已提供http server。按照Swoole MVC規范編寫的程序都可以獨立運行,無需前置Apache服務器。
 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 解析器編譯,駐留內存。以后都是直接載入 OPCODE ,讓 Zend 引擎直接運行。另外,之前 PHP 不能實現的,數據庫連接池,緩存連接池都可以實現。系統的運行效率會大大提高。

Swoole使用 PHP 本身編寫出 HTTP 服務器,以獨立服務器方式運行,單個程序頁面 ( 有對象生成,數據庫連接、 smarty 模板操作 ) 的執行時間由原來的 0.0x 秒,下降到 0.00x 秒。

新功能

Swoole增加中心日志控制模塊。用法
$php->log->info('that is swoole!');
查看詳情

Swoole增加事件觸發系統。用法

$php->event->raise('sendsms',$mobile,$sms_content);
查看詳情 這是一個很酷的設計,如果在本地測試環境中,你可是配置為同步,那么raise引發一個時間后,去執行事件對應的handle函數。如果是服務器環境,可以設置為異步,那么raise只會向Queue服務器投遞一個事件。在后臺啟動一個守護進程,從Queue服務器取得事件,然后再用handle函數去處理。

壓力測試

運行環境:Linux Windows Mac FreeBSD Unix

PHP版本支持:PHP5.2 PHP5.3 PHP6.0

PHP5.1需要添加Json支持,不支持PHP4.x版本

支持的數據庫:MS SQL Server、MySQL、IBM DB2、Oracle、Interbase 、SQLite、PostgreSQL、ODBC

支持的運行方式:Web、Cli命令行腳本、PHP-GTK GUI

壓力測試:ab -c 100 -n 1000 http://www.swoole.com/ (服務器環境為雙核CPU+4G內存+320G SATA,已安裝APC擴展)

Requests per second: 733.86 #/sec

Transfer rate: 7737.04 [Kbytes/sec] received

此處省略了一部分內容,有興趣的朋友可以自己測試一下。我這里是在服務器上對實際的動態頁面進行的測試.

最新版本:Swoole 0.98 beta 1 Released Featured

點擊下載 次版本修正、改進了很多地方。新增了Swoole事件處理系統,Validate驗證類,CacheQueue高速隊列等,具體內容請瀏覽updates項目。增強了安全性和健壯性。并且解決了在生產環境遇到各類問題

項目主頁已用swoole框架重寫,在線文檔和社區正在建立中,另外將收錄幾個比較成功的站點案例。另外基于libevent和pcntl的linux socket服務器類,已編碼完成,目前正在實驗測試中。將在下一個版本(預計2011年6月份)中包含。

Swoole提供PHP網絡服務器類庫

PHP不僅可以運行于Web,也可以作為守護進程或者是Windows服務運行。通過建立TCP、UDP Server,可以建立后端應用服務器,更好的將PHP程序分層。

前端Web層PHP處理,請求應答。后端守護進程運行的PHP程序,處理業務邏輯。另外,還可以將慢速操作,放到后端處理,比如發送遠程請求,批量處理更新,前端發送UDP包到后端服務器,后端服務器進行處理,并處理結果。

Swoole網絡服務器類庫,首先在Linux/Unix下實現,依賴于libevent,epoll調用,實現高性能高并發服務器。

無論在Web上還是服務器程序,都可以使用Swoole類庫提供的功能,只需要require 'config.php',就可以了。

Swoole開始提供Javascript庫了

目前,提供2個包,UI類:包含Dialog、Button、日歷輸入框,表單驗證類:根據屬性,自動驗證表單。

瀏覽swoole.js

包含以下幾個特色功能:

1、 類似ORM的數據查詢,提供SQL封裝器,讓MySQL的SQL與PHP的Array,會話,Cache無縫結合

2、App MVC分層結構,有效的程序結構分層,提高程序的可維護性和擴展性,實現低耦合,基于接口開發。

3、集成大量實用的功能,比如方便的數據庫操作,模板操作,緩存操作,系統配置,表單處理,分頁,數據調用,字典操作,上傳處理,內容編輯,調試等

4、模板-數據反射系統,可以直接在模板中調用數據,提供很多標簽,可是無需修改程序,只修改模板,即可實現網站各類更新維護工作。

Future

1、Swoole net 類的繼續完善,解決異步IO,增加多線程Driver,完成其他協議

2、Swoole框架,部分使用C重寫,作為PHP的擴展模塊。

項目主頁:http://www.baiduhome.net/lib/view/home/1329231143718

 本文由用戶 openkk 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!