기본 이벤트 처리 함수 stream_select()는 1024개 한계가 있음
https://www.php.net/manual/en/function.stream-select.php
이 한계를 풀고 성능을 향상시키기 위해 별도의 이벤트 라이브러리들이 존재
//
php event library
https://pecl.php.net/packages.php?catpid=44&catname=Event
1024 개의 동시 연결 제한이없는 다른 이벤트 루프를 사용하기
//참고
https://github.com/reactphp/event-loop#loop-implementations
signal handling - ext-pcntl
//=======================================
libev
a high performance full-featured event loop written in C
http://software.schmorp.de/pkg/libev.html
http://pod.tst.eu/http://cvs.schmorp.de/libev/ev.pod
https://github.com/enki/libev - 754
- 3년전, release 없음
- 문서 부족
* php - ev
pecl-ev
PECL extension providing interface to libev library
ev is a PECL extension providing interface to libev library - high performance full-featured event loop written in C.
Libev is an event loop
https://pecl.php.net/package/ev/
v1.0.6 stable 2019-05-25
https://bitbucket.org/osmanov/pecl-ev
php Process Control Extensions
http://docs.php.net/ev
//===========
Libev
//==========
* 설치
sudo pecl channel-update pecl.php.net
sudo pecl install ev
WARNING: channel "pecl.php.net" has updated its protocols, use "pecl channel-update pecl.php.net" to update
downloading ev-1.0.6.tgz ...
Starting to download ev-1.0.6.tgz (125,014 bytes)
............................done: 125,014 bytes
86 source files, building
You should add "extension=ev.so" to php.ini
- php.ini 파일 수정
extension=ev.so <== 추가
//============================================
libevent
https://github.com/libevent/libevent - 5,044
- v2.1.11 , 2019/08
https://libevent.org/
https://www.php.net/manual/en/book.libevent.php
//========
https://juejin.im/entry/5b39661be51d4558ae19fd03
* PHP5 installation:
pecl install libevent-0.1.0
* PHP7 installation (unstable):
git clone https://github.com/expressif/pecl-event-libevent.git
cd pecl-event-libevent
phpize
./configure
make && sudo make install
//=================
* php - event
Event - PECL extension
Event is a PECL extension providing interface to libevent C library.
Provides interface to libevent library
https://pecl.php.net/package/event
v2.5.3 stable 2019-06-16
https://bitbucket.org/osmanov/pecl-event
php Other Services
http://docs.php.net/event
* 설치
sudo pecl channel-update pecl.php.net
sudo pecl install event
WARNING: channel "pecl.php.net" has updated its protocols, use "pecl channel-update pecl.php.net" to update
downloading event-2.5.3.tgz ...
Starting to download event-2.5.3.tgz (140,913 bytes)
..............................done: 140,913 bytes
50 source files, building
You should add "extension=event.so" to php.ini
- php.ini 파일 수정
extension=ev.so <== 추가
//================================================
libuv
libuv/libuv
비동기 I/O 용 C 라이브러리
node.js 에서 사용
https://github.com/libuv/libuv - 13,170
- v1.30.1 , 2019.07
https://libuv.org/
//===============
* PHP - libuv wrapper
https://pecl.php.net/package/uv
0.2.4 beta 2019-05-01
* 설치
sudo pecl install uv-beta
checking for libuv... checking for uv_version in -luv... no
configure: error: wrong uv library version or library not found
ERROR: `/tmp/pear/temp/uv/configure --with-php-config=/usr/bin/php-config' failed
//==========
// 참고
* php에서 uv 활용
https://github.com/bwoebi/php-uv - 117
- v0.2.2 , 2017/06
* 설치
git clone https://github.com/bwoebi/php-uv.git
cd php-uv
phpize
./configure
make
make install
# add `extension=uv.so` to your php.ini
checking for libuv checking for uv_version in luv no
configure: error: wrong uv library version or library not found
//=====================================
ReactPhp
reactphp/react
Event-driven, non-blocking I/O with PHP
https://github.com/reactphp/react - 7000
- v1.0.0 , 2019/07
https://reactphp.org/
* 설치
composer require react/react:^1.0
'Code > PHP' 카테고리의 다른 글
[php] Xdebug 사용법, php 브레이크 포인트 걸기 (0) | 2019.10.31 |
---|---|
[php] array_walk , array_map 사용법 (0) | 2019.09.05 |
[라라벨] 서버 다운 메시지 변경 (0) | 2019.08.04 |
[PHP] String Complex (curly) syntax (0) | 2019.04.05 |
[PHP] 시간 사용법 (0) | 2019.04.01 |