ホームページ  >  記事  >  バックエンド開発  >  PHP 用の swoole 非同期並列拡張機能を追加

PHP 用の swoole 非同期並列拡張機能を追加

WBOY
WBOYオリジナル
2016-06-13 12:23:511079ブラウズ

PHP 用の swoole 非同期並列拡張機能を追加します

PHP 用の swoole 非同期並列拡張機能を追加します

?

?

1. インストール環境を確認します

  • コア コードは FreeBSD と互換性があります。
  • Linux カーネル バージョン 2.3.32 以降、
  • PHP 5.3.10 以降、
  • gcc 4.4 以降を通過するように調整されます。コアコードはclangと互換性があります。CPUアフィニティ設定機能
  • cmake2.4をオフにする必要があります。C/Cライブラリとしてlibswoole.soにコンパイルする場合は、cmake
?

2. インストールと構成

2. 1 swoole をインストールします。pecl を使用して直接インストールするか、

のリリース バージョンをダウンロードします。 swoole をコンパイルしてインストールします

?2.11 pecl install swoole extension

pecl が利用できない場合は、php インストール ディレクトリの bin ディレクトリが追加されていることを確認してください。システム変数

?
1
# pecl install swoole
1
# pecl install swoole?
? >

?2.12 swoole 拡張機能をコンパイルしてインストールします

ここからダウンロードします: http://pecl.php.net/package/swoole

?
1
2
3
4
# cd swoole
# phpize
# ./configure
# make && make install
12
34

# cd swoole <div class="linenumber2index1alt1"> <code class="csharpプリプロセッサ"># phpize

# ./configure
# make && make install

2.2 php.ini の設定phpinfo() 設定ファイル (php.ini) パスの確認追加:
1
extension=swoole.so

?

extension=swoole.so
1
Apache を再起動して PHP 拡張ライブラリを表示します
1
2
# service httpd restart
# php -m
?
#service httpd restart
# php -m
12

确认swoole已追加

官方文档:http://wiki.swoole.com/wiki/index/prid-1

?

3. 测试

server.php:

?
1
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php

????$serv = new swoole_server("0.0.0.0", 9501);

????$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->on('close', function ($serv, $fd) {
????????echo "Client: Close.n";
????});
????$serv->start();
?>
2
3
4
567
8910
111213
<?php<🎜>
????$serv = < code class="php キーワード">new swoole_server("0.0.0.0", 9501);<🎜>
????$serv->on('connect'関数 ($serv , $fd){
?????????echo "Client:Connect.n";
????});
??? ?$serv->on('receive' 関数 ($serv$fd, $from_id$data) {
?????????$serv->send($fd, 'Swoole: '. $data);
?????? code><code class="php plain">});
??????$serv->on('close', 関数 ($ serv, $fd) {
?????????echo "クライアント: Close.n";
????<code class="php plain">});
????$serv->start();
?>

client.php:

?
1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php

????$client = new swoole_client(SWOOLE_SOCK_TCP, SWOOLE_SOCK_ASYNC);

????$client->on("connect", function($cli) {
????????$cli->send("hello worldn");
????});
????$client->on("receive", function($cli, $data){
????????echo "Receive: $datan";
????});
????$client->on("error", function($cli){
????????echo "connect failn";
????});
????$client->on("close", function($cli){
????????echo "closen";
????});
????$client->connect('127.0.0.1', 9501, 0.5);
?>
2
3
4
5
67
8
91011
12131415
16
<?php<🎜>
????</code ><code class="php 変数">$client = 新しい swoole_client(SWOOLE_SOCK_TCP, SWOOLE_SOCK_ASYNC);<🎜>
????$client->on("connect", function($cli) {
?????????$cli->send("hello worldn") >);
????});
????$client->on("receive"関数($cli , $data){
?????????echo "受信: $datan";
? ???});
???? $client->on("error", 関数($cli){
?? ??????echo "接続に失敗しました" ;
????}); code><div class="linenumber12index11alt1"> <code class="php space">????$client->on("close", 関数($cli){
?????????echo "closen";
????<code class="php plain">});
????$client->connect('127.0.0.1', 9501, 0.5);
?>

テスト:

?テストサーバー:

???

????テストクライアント:

???

?

?

終了

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。