2017-11-24 36 views
0

laravel 웹 응용 프로그램을 php5.6에서 php7.1로 업그레이드하면 libevent 모듈을 업그레이드 할 수 있습니다. 응용 프로그램은 반응 라이브러리를 기반으로 비동기 ans입니다.CentOS 6, Php7.1, libevent, nginx returns 502

그래서 설치가 끝났습니다 : PHP 7.1.12, libevent : 2.1.8 + expressif/pecl-event-libevent. 그리고 안정적인 "502 Bad Gateway"가 nginx에서 있습니다. libevent (ReactStreamLoop)가 없거나 PHP 5.6 이상에서는 libevent : 1.4가 정상적으로 작동합니다. 토지를 index.php에 요청하면 나중에 시작 응용 프로그램 내부에서 문제가 발생합니다.

Nginx의 로그 :

2017년 11월 24일 10시 41분 24초 [오류] 24,985 # 0()는 RECV 실패 * 7 (104 : 피어 연결 재설정) 상류로부터 응답 헤더를 읽는 동안 , 클라이언트 : 14.183.16.180, 서버 : 173.199.117.122, 요청 : "GET/HTTP/1.1", 업스트림 : "fastcgi : //127.0.0.1 : 9000", 호스트 : "173.199.117.122"

2017/11/24 10:41:25 클라이언트에서 14.183.16.180, 서버 : 173.199.117.122, 요청 헤더에서 응답 헤더를 읽는 동안 [recur()가 실패했습니다 (104 : 피어로 연결 재설정)] 오류 : 24985 # "GET/HTTP/1.1", 업스트림 : "fastcgi : //127.0.0.1 : 9000", 호스트 : "173.199.117.122"

PHP-FPM 로그 :

[11 월 24 2017 10시 41분 24초] WARNING : 풀 WWW]에서 시작

39.486978 초 후에 신호 (11) (SIGSEGV)에 종료 자식 22300

[24 11 월 - 2017 10시 41분 24초]주의 사항 : [풀 WWW] 아이 22331은

을 시작

[24 11 월 - 2017 10시 41분 25초] 경고 : [풀 WWW가] 아이 22301가 종료 시작으로부터 40.205103 초 후 신호 11 (SIGSEGV)

주의 : [pool www] child 22332 started

업데이트 : 강제 사용 ReactStreamLoop 인 경우 작동합니다.

업데이트 : 비슷한 구성으로 로컬에서 재생산되었습니다. LibEventLoop과 충돌하지만 StreamSelectLoop과 작동하는 예제를 발견했습니다.

require_once __DIR__.'/../vendor/autoload.php'; 

$loop = new \React\EventLoop\LibEventLoop(); 
//$loop = new \React\EventLoop\StreamSelectLoop(); 

$config = array(
    'host'  => '127.0.0.1', 
    'port'  => '3306', 
    'dbname' => 'mysql', 
    'user'  => 'root', 
    'passwd' => 'root', 
    'charset' => 'utf8', 
); 

$client = new \React\MySQL\Connection($loop, $config); 

$client->connect(function() {}); 

$client->query('select 8 as cnt', function() { 
    echo "inside\n"; 
}); 

echo "start\n"; 
$loop->run(); 

출력 :

#php ./tests/test.php 
start 
Segmentation fault (core dumped) 

답변

0

사용중인 확장자가 PHP 7과 호환되지 않습니다. stream_select() 또는 지원되는 확장 중 하나와 같은 다른 이벤트 루프 구현 중 하나를 사용해야합니다.

자세한 내용은 https://github.com/reactphp/event-loop/pull/62을 참조하십시오.