Swoole PHP高效能程式設計
其實超出瀏覽器,PHP仍有用武之地,Linux上PHP通過pcntl、posix、sysvshm、sysvmsg、libevent、 swoole、proctitle等PECL擴充套件支援,用純PHP就可以編寫不依賴Nginx/Apache的高效能Socket應用伺服器(獨立控制程式,以守護程式執行)
Phalcon 是開源、全功能棧、使用 C 擴充套件編寫、針對高效能優化的PHP5框架http://myleftstudio.com/
<?php
class ControllerBase extends Phalcon\Mvc\Controller
{
protected function forward($uri)
{
//TODO 考慮這裡是否可以接收url中的引數
$uriParts = explode('/', $uri);
return $this->dispatcher->forward(
array(
'controller' => $uriParts[0],
'action' => $uriParts[1]
)
);
}
protected function redirect($uri = '', $param = array())
{
$url = new Phalcon\Mvc\Url();
$uri .= !empty($param) ? '/?' . http_build_query($param) : '';
header("location:" . $url->get($uri));
die;
}
/**
* 獲取當前controller下的方法 資料
* @return string
*/
public function getActionInfo()
{
$action = '/' . $this->dispatcher->getControllerName() . '/' . $this->dispatcher->getActionName();
return $this->session->get($action);
}
}
Swoole PHP語言的非同步、並行、高效能網路通訊框架, 使用純C語言編寫,提供了PHP語言的非同步多執行緒伺服器,非同步TCP/UDP網路客戶端,非同步MySQL,資料庫連線池,AsyncTask,訊息佇列, 毫秒定時器,非同步檔案讀寫,非同步DNS查詢。Swoole可以廣泛應用於網際網路、行動通訊、企業軟體、雲端計算、網路遊戲、物聯網、車聯網、智慧家居等領域。 使用PHP+Swoole作為網路通訊框架,可以使企業IT研發團隊的效率大大提升,更加專注於開發創新產品。
下載原始碼包後,在終端進入原始碼目錄,執行下面的命令進行編譯和安裝
cd swoole
phpize
./configure
make
sudo make install
安裝成功
編譯安裝成功後,修改php.ini加入
extension=swoole.so
通過php -m
或phpinfo()
來檢視是否成功載入了swoole,如果沒有,可能是
php.ini
的路徑不對,可以使用php -i |grep php.ini
來定位到php.ini
的絕對路徑。
TCP Server
<?php //server.php
$serv = new swoole_server("127.0.0.1", 9501);
$serv->set(array(
'worker_num' => 8, //工作程式數量
'daemonize' => true, //是否作為守護程式
));
$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->close($fd);
});
$serv->on('close', function ($serv, $fd) {
echo "Client: Close.\n";
});
$serv->start();
TCP 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 "Received: ".$data."\n";
});
$client->on("error", function($cli){
echo "Connect failed\n";
});
$client->on("close", function($cli){
echo "Connection close\n";
});
//發起網路連線
$client->connect('127.0.0.1', 9501, 0.5);
php命令列開啟監聽
php server.php
客戶端訪問
瀏覽器執行程式碼
<?php
$client = new swoole_client(SWOOLE_SOCK_TCP, SWOOLE_SOCK_SYNC); //同步阻塞
$client->connect('127.0.0.1', 9503, 0.5);////發起網路連線
$client->send("hello world\n");
$data = $client->recv(1024);
echo $data;
unset($client);
php+swoole目前的主要競爭物件是node.js,兩者的使用場景差不多。php在web領域的龐大使用量,如果你的現有專案也是用php構建的,用swoole寫後端服務的時候可以複用大量的現有模組,這對企業開發的一致性是很重要的,理論上講只需要維護一套基礎就行了
李丹陽 https://github.com/LinkedDestiny/swoole-doc
phpstorm-swoole-ide-helper 程式碼自動補全http://hudeyong926.iteye.com/admin/blogs/2285968
相關文章
- Swoole 程式設計須知程式設計
- Light-PHP 基於 swoole 的高效能 PHP 框架PHP框架
- 利用swoole_process和eventloop實現php非同步程式設計OOPPHP非同步程式設計
- 大話 swoole 非同步程式設計非同步程式設計
- PHP 高效能框架 Workerman 憑什麼能硬剛 Swoole ?PHP框架
- php swoolePHP
- 為什麼說 Swoole 是 PHP 程式設計師技術水平的分水嶺?PHP程式設計師
- 高效能JavaScript DOM程式設計JavaScript程式設計
- 高效能javascript程式設計筆記JavaScript程式設計筆記
- UCP - 高效能 Oracle JDBC 程式設計OracleJDBC程式設計
- 高效能JavaScript 程式設計實踐JavaScript程式設計
- JDK 高效能程式設計之容器JDK程式設計
- 遊戲架構設計——高效能並行程式設計遊戲架構並行行程程式設計
- PHP多程式程式設計(一)PHP程式設計
- php非同步程式設計PHP非同步程式設計
- 現代php程式設計PHP程式設計
- PHP程式設計考試PHP程式設計
- python高效能程式設計方法一Python程式設計
- PHP-FPM vs SwoolePHP
- PHP回顧之多程式程式設計PHP程式設計
- 玩轉 PHP 網路程式設計全套之多程式程式設計PHP程式設計
- PHP程式設計師危機PHP程式設計師
- PHP Socket 程式設計詳解PHP程式設計
- PHP 的面向方面程式設計PHP程式設計
- PHP程式設計師面試題PHP程式設計師面試題
- GPU高效能程式設計CUDA實戰(二)GPU程式設計
- 高效能JS筆記3——DOM程式設計JS筆記程式設計
- 使用 .NET Core 高效能併發程式設計程式設計
- 什麼是PHP或PHP程式碼以及PHP程式設計的工作原理PHP程式設計
- 伺服器程式設計——高效能伺服器程式框架伺服器程式設計框架
- 高效能程式設計師的七個習慣程式設計師
- 高效能python程式設計之協程(stackless)Python程式設計
- 玩轉 PHP 網路程式設計全套之 socket stream 程式設計PHP程式設計
- PHP回顧之socket程式設計PHP程式設計
- 內推go/php程式設計師GoPHP程式設計師
- PHP Web程式設計教與學PHPWeb程式設計
- PHP 安全程式設計建議PHP程式設計
- PHP併發IO程式設計之路PHP程式設計