PHP高級Web開發框架 Swoole
框架不是為了提升網站的性能,是為了提升網站的開發效率。最少的性能損耗,換取最大的開發效率。利用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 UnixPHP版本支持: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的擴展模塊。