블로그

[php] 이벤트 라이브러리

Code › PHP · 2019-08-09 · 공개

기본 이벤트 처리 함수 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 
sudo pecl install ev

WARNING: channel "" has updated its protocols, use "pecl channel-update " to update
downloading  ...

Starting to download  (125,014 bytes)
 125,014 bytes
86 source files, building

You should add "" to 

-  파일 수정
   <== 추가

//============================================
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 
sudo pecl install event

WARNING: channel "" has updated its protocols, use "pecl channel-update " to update
downloading  ...
Starting to download  (140,913 bytes)
 140,913 bytes
50 source files, building

You should add "" to 

- 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 `` to your 

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

알림